X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/608e6d8048124bd547efca2ce65ea0b7907ff697..1c4c468783e5f380324c29ebc3b2c452da8cc2a0:/apps/catalogue/templatetags/book_list.py diff --git a/apps/catalogue/templatetags/book_list.py b/apps/catalogue/templatetags/book_list.py index f5b7e647..6e64ed61 100755 --- a/apps/catalogue/templatetags/book_list.py +++ b/apps/catalogue/templatetags/book_list.py @@ -1,21 +1,21 @@ +# -*- coding: utf-8 -*- from __future__ import absolute_import -from re import split 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 +from catalogue.models import Chunk, Project register = template.Library() class ChunksList(object): def __init__(self, chunk_qs): - #self.chunk_qs = chunk_qs#.annotate( - #book_length=Count('book__chunk')).select_related( - #'book')#, 'stage__name', - #'user') + # self.chunk_qs = chunk_qs#.annotate( + # book_length=Count('book__chunk')).select_related( + # 'book')#, 'stage__name', + # 'user') self.chunk_qs = chunk_qs.select_related('book__hidden') self.book_qs = chunk_qs.values('book_id') @@ -103,13 +103,17 @@ def document_list_filter(request, **kwargs): chunks = chunks.order_by('book__title', 'book', 'number') + if not request.user.is_authenticated(): + chunks = chunks.filter(book__public=True) + state = arg_or_GET('status') if state in _states_dict: chunks = chunks.filter(_states_dict[state]) 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 = foreign_filter(chunks, arg_or_GET('stage'), 'stage', Chunk.tag_model) 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 @@ -122,16 +126,22 @@ 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, "request": request, "books": ChunksList(document_list_filter(request, **filters)), "stages": Chunk.tag_model.objects.all(), "states": _states_options, + "projects": Project.objects.all(), }) return new_context -