Librarian in regular requirements.
[redakcja.git] / apps / catalogue / templatetags / book_list.py
index 5e18b7e..9ac996b 100755 (executable)
@@ -5,7 +5,7 @@ from django.db.models import Q, Count
 from django import template
 from django.utils.translation import ugettext_lazy as _
 from django.contrib.auth.models import User
-from catalogue.models import Chunk, Image
+from catalogue.models import Chunk, Image, Project
 
 register = template.Library()
 
@@ -113,6 +113,7 @@ def document_list_filter(request, **kwargs):
     chunks = foreign_filter(chunks, arg_or_GET('user'), 'user', User, 'username')
     chunks = foreign_filter(chunks, arg_or_GET('stage'), 'stage', Chunk.tag_model, 'slug')
     chunks = search_filter(chunks, arg_or_GET('title'), ['book__title', 'title'])
+    chunks = foreign_filter(chunks, arg_or_GET('project'), 'book__project', Project, 'pk')
     return chunks
 
 
@@ -125,9 +126,14 @@ def book_list(context, user=None):
         new_context = {"viewed_user": user}
     else:
         filters = {}
-        new_context = {"users": User.objects.annotate(
+        new_context = {
+            "users": User.objects.annotate(
                 count=Count('chunk')).filter(count__gt=0).order_by(
-                '-count', 'last_name', 'first_name')}
+                '-count', 'last_name', 'first_name'),
+            "other_users": User.objects.annotate(
+                count=Count('chunk')).filter(count=0).order_by(
+                'last_name', 'first_name'),
+                }
 
     new_context.update({
         "filters": True,
@@ -135,6 +141,7 @@ def book_list(context, user=None):
         "books": ChunksList(document_list_filter(request, **filters)),
         "stages": Chunk.tag_model.objects.all(),
         "states": _states_options,
+        "projects": Project.objects.all(),
     })
 
     return new_context
@@ -148,8 +155,8 @@ _image_states = [
         ('unpublished', _('unpublished'), Q(_published=False)),
         ('empty', _('empty'), Q(head=None)),
     ]
-_image_states_options = [s[:2] for s in _states]
-_image_states_dict = dict([(s[0], s[2]) for s in _states])
+_image_states_options = [s[:2] for s in _image_states]
+_image_states_dict = dict([(s[0], s[2]) for s in _image_states])
 
 def image_list_filter(request, **kwargs):
 
@@ -168,6 +175,7 @@ def image_list_filter(request, **kwargs):
     images = foreign_filter(images, arg_or_GET('user'), 'user', User, 'username')
     images = foreign_filter(images, arg_or_GET('stage'), 'stage', Image.tag_model, 'slug')
     images = search_filter(images, arg_or_GET('title'), ['title', 'title'])
+    images = foreign_filter(images, arg_or_GET('project'), 'project', Project, 'pk')
     return images
 
 
@@ -180,9 +188,14 @@ def image_list(context, user=None):
         new_context = {"viewed_user": user}
     else:
         filters = {}
-        new_context = {"users": User.objects.annotate(
-                count=Count('chunk')).filter(count__gt=0).order_by(
-                '-count', 'last_name', 'first_name')}
+        new_context = {
+            "users": User.objects.annotate(
+                count=Count('image')).filter(count__gt=0).order_by(
+                '-count', 'last_name', 'first_name'),
+            "other_users": User.objects.annotate(
+                count=Count('image')).filter(count=0).order_by(
+                'last_name', 'first_name'),
+                }
 
     new_context.update({
         "filters": True,
@@ -190,6 +203,7 @@ def image_list(context, user=None):
         "objects": image_list_filter(request, **filters),
         "stages": Image.tag_model.objects.all(),
         "states": _image_states_options,
+        "projects": Project.objects.all(),
     })
 
     return new_context