publish log + some fixes
[redakcja.git] / apps / catalogue / templatetags / catalogue.py
index cdb1940..850a2e8 100644 (file)
@@ -1,13 +1,13 @@
 from __future__ import absolute_import
 
-from django.db.models import Count
+from django.db.models import Count, Q
 from django.core.urlresolvers import reverse
 from django.contrib.comments.models import Comment
 from django.template.defaultfilters import stringfilter
 from django import template
 from django.utils.translation import ugettext as _
 
-from catalogue.models import Book, Chunk
+from catalogue.models import Book, Chunk, BookPublishRecord
 
 register = template.Library()
 
@@ -32,7 +32,7 @@ def main_tabs(context):
     if user.is_authenticated():
         tabs.append(Tab('my', _('My page'), reverse("catalogue_user")))
 
-    tabs.append(Tab('unassigned', _('Unassigned'), reverse("catalogue_unassigned")))
+    tabs.append(Tab('all', _('All'), reverse("catalogue_document_list")))
     tabs.append(Tab('users', _('Users'), reverse("catalogue_users")))
     tabs.append(Tab('create', _('Add'), reverse("catalogue_create_missing")))
     tabs.append(Tab('upload', _('Upload'), reverse("catalogue_upload")))
@@ -61,10 +61,12 @@ class WallItem(object):
             return self.email
 
 
-def changes_wall(max_len):
+def changes_wall(user, max_len):
     qs = Chunk.change_model.objects.filter(revision__gt=-1).order_by('-created_at')
     qs = qs.defer('patch')
     qs = qs.select_related('author', 'tree', 'tree__book__title')
+    if user:
+        qs = qs.filter(Q(author=user) | Q(tree__user=user))
     qs = qs[:max_len]
     for item in qs:
         tag = 'stage' if item.tags.count() else 'change'
@@ -80,21 +82,28 @@ def changes_wall(max_len):
         yield w
 
 
-def published_wall(max_len):
-    qs = Book.objects.exclude(last_published=None).order_by('-last_published')
+# TODO: marked for publishing
+
+
+def published_wall(user, max_len):
+    qs = BookPublishRecord.objects.select_related('book__title')
+    if user:
+        # TODO: published my book
+        qs = qs.filter(Q(user=user))
     qs = qs[:max_len]
     for item in qs:
         w  = WallItem('publish')
-        w.title = item.title
-        w.summary = item.title
+        w.title = item.book.title
+        #w.summary = 
         w.url = chunk.book.get_absolute_url()
-        w.timestamp = item.last_published
-        w.user = item.last_published_by
         yield w
 
 
-def comments_wall(max_len):
+def comments_wall(user, max_len):
     qs = Comment.objects.filter(is_public=True).select_related().order_by('-submit_date')
+    if user:
+        # TODO: comments concerning my books
+        qs = qs.filter(Q(user=user))
     qs = qs[:max_len]
     for item in qs:
         w  = WallItem('comment')
@@ -130,12 +139,13 @@ def big_wall(max_len, *args):
 
 
 @register.inclusion_tag("catalogue/wall.html", takes_context=True)
-def wall(context, max_len=10):
+def wall(context, user=None, max_len=10):
+    print user
     return {
         "request": context['request'],
         "STATIC_URL": context['STATIC_URL'],
         "wall": big_wall(max_len,
-            changes_wall(max_len),
-            published_wall(max_len),
-            comments_wall(max_len),
+            changes_wall(user, max_len),
+            published_wall(user, max_len),
+            comments_wall(user, max_len),
         )}