Librarian in regular requirements.
[redakcja.git] / apps / catalogue / templatetags / wall.py
index 28671fb..d000421 100755 (executable)
@@ -7,7 +7,7 @@ from django.contrib.comments.models import Comment
 from django import template
 from django.utils.translation import ugettext as _
 
-from catalogue.models import Chunk, BookPublishRecord
+from catalogue.models import Chunk, BookPublishRecord, Image, ImagePublishRecord
 
 register = template.Library()
 
@@ -44,7 +44,7 @@ def changes_wall(user=None, max_len=None, day=None):
     for item in qs:
         tag = 'stage' if item.tags.count() else 'change'
         chunk = item.tree
-        w  = WallItem(tag)
+        w = WallItem(tag)
         if user and item.author != user:
             w.header = _('Related edit')
         else:
@@ -60,6 +60,36 @@ def changes_wall(user=None, max_len=None, day=None):
         yield w
 
 
+def image_changes_wall(user=None, max_len=None, day=None):
+    qs = Image.change_model.objects.order_by('-created_at')
+    qs = qs.select_related('author', 'tree', 'tree__title')
+    if user is not None:
+        qs = qs.filter(Q(author=user) | Q(tree__user=user))
+    if max_len is not None:
+        qs = qs[:max_len]
+    if day is not None:
+        next_day = day + timedelta(1)
+        qs = qs.filter(created_at__gte=day, created_at__lt=next_day)
+    for item in qs:
+        tag = 'stage' if item.tags.count() else 'change'
+        image = item.tree
+        w  = WallItem(tag)
+        if user and item.author != user:
+            w.header = _('Related edit')
+        else:
+            w.header = _('Edit')
+        w.title = image.title
+        w.summary = item.description
+        w.url = reverse('wiki_img_editor', 
+                args=[image.slug]) + '?diff=%d' % item.revision
+        w.timestamp = item.created_at
+        w.user = item.author
+        w.user_name = item.author_name
+        w.email = item.author_email
+        yield w
+
+
+
 # TODO: marked for publishing
 
 
@@ -84,6 +114,27 @@ def published_wall(user=None, max_len=None, day=None):
         yield w
 
 
+def image_published_wall(user=None, max_len=None, day=None):
+    qs = ImagePublishRecord.objects.select_related('image__title')
+    if user:
+        # TODO: published my book
+        qs = qs.filter(Q(user=user))
+    if max_len is not None:
+        qs = qs[:max_len]
+    if day is not None:
+        next_day = day + timedelta(1)
+        qs = qs.filter(timestamp__gte=day, timestamp__lt=next_day)
+    for item in qs:
+        w = WallItem('publish')
+        w.header = _('Publication')
+        w.title = item.image.title
+        w.timestamp = item.timestamp
+        w.url = item.image.get_absolute_url()
+        w.user = item.user
+        w.email = item.user.email
+        yield w
+
+
 def comments_wall(user=None, max_len=None, day=None):
     qs = Comment.objects.filter(is_public=True).select_related().order_by('-submit_date')
     if user:
@@ -140,6 +191,8 @@ def wall(context, user=None, max_len=100):
         "wall": big_wall([
             changes_wall(user, max_len),
             published_wall(user, max_len),
+            image_changes_wall(user, max_len),
+            image_published_wall(user, max_len),
             comments_wall(user, max_len),
         ], max_len)}
 
@@ -151,5 +204,7 @@ def day_wall(context, day):
         "wall": big_wall([
             changes_wall(day=day),
             published_wall(day=day),
+            image_changes_wall(day=day),
+            image_published_wall(day=day),
             comments_wall(day=day),
         ])}