X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/ce8d791a5298e0cb2569034aec4c8b57afac97b2..6d48dc65380f540f4471e5c890fcf27b2a240374:/apps/catalogue/templatetags/book_list.py?ds=sidebyside diff --git a/apps/catalogue/templatetags/book_list.py b/apps/catalogue/templatetags/book_list.py index 15654be2..f7e70474 100755 --- a/apps/catalogue/templatetags/book_list.py +++ b/apps/catalogue/templatetags/book_list.py @@ -71,10 +71,13 @@ def foreign_filter(qs, value, filter_field, model, model_field='slug', unset='-' return qs.filter(**{filter_field: obj}) -def search_filter(qs, value, filter_field): +def search_filter(qs, value, filter_fields): if not value: return qs - return qs.filter(**{"%s__icontains" % filter_field: value}) + q = Q(**{"%s__icontains" % filter_fields[0]: value}) + for field in filter_fields[1:]: + q |= Q(**{"%s__icontains" % field: value}) + return qs.filter(q) _states = [ @@ -100,13 +103,16 @@ 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 = search_filter(chunks, arg_or_GET('title'), 'book__title') + chunks = search_filter(chunks, arg_or_GET('title'), ['book__title', 'title']) return chunks @@ -124,6 +130,7 @@ def book_list(context, user=None): '-count', 'last_name', 'first_name')} new_context.update({ + "filters": True, "request": request, "books": ChunksList(document_list_filter(request, **filters)), "stages": Chunk.tag_model.objects.all(), @@ -131,4 +138,3 @@ def book_list(context, user=None): }) return new_context -