X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/eaba19e725b49fdf4efc858604a7b9d70d27f59f..a9226097c8eea0591fd3249f62a71becc6d2be93:/src/catalogue/views.py diff --git a/src/catalogue/views.py b/src/catalogue/views.py index d563b68a6..d93ae3553 100644 --- a/src/catalogue/views.py +++ b/src/catalogue/views.py @@ -202,15 +202,13 @@ class BookList(ObjectListView): def search(self, qs): term = self.request.GET.get('search') if term: - meta_rels = TagRelation.objects.exclude(tag__category='set') + meta_rels = TagRelation.objects.filter(tag__category='author') # TODO: search tags in currently displaying language if self.is_themed: - #qs = qs.annotate( - # meta=FilteredRelation('book__tag_relations', condition=Q(tag_relations__in=meta_rels)) - #) + rels = meta_rels.filter(tag__name_pl__icontains=term) qs = qs.filter( Q(book__title__icontains=term) | - #Q(meta__tag_relations__tag__name_pl__icontains=term) | + Q(tag_relations__in=rels) | Q(text__icontains=term) ).distinct() else: @@ -284,15 +282,36 @@ class TaggedObjectList(BookList): qs = Book.tagged.with_all(self.ctx['work_tags']).filter(findable=True) qs = qs.exclude(ancestor__in=qs) if self.is_themed: - qs = Fragment.tagged.with_all(self.ctx['fragment_tags']).filter( - Q(book__in=qs) | Q(book__ancestor__in=qs) - ) + fqs = Fragment.tagged.with_all(self.ctx['fragment_tags']) + if self.ctx['work_tags']: + fqs = fqs.filter( + Q(book__in=qs) | Q(book__ancestor__in=qs) + ) + qs = fqs return qs def get_suggested_tags(self, queryset): tag_ids = [t.id for t in self.ctx['tags']] - related_tags = list(get_top_level_related_tags(self.ctx['tags'])) - if not self.is_themed: + if self.is_themed: + related_tags = [] + current_books = self.get_queryset().values_list('book', flat=True).distinct() + containing_books = Book.objects.filter(Q(id__in=current_books) | Q(children__in=current_books)) + + related_tags.extend(list( + Tag.objects.usage_for_queryset( + containing_books, + ).exclude(category='set').exclude(pk__in=tag_ids) + )) + if self.request.user.is_authenticated: + related_tags.extend(list( + Tag.objects.usage_for_queryset( + containing_books + ).filter( + user=self.request.user + ).exclude(name='').exclude(pk__in=tag_ids) + )) + else: + related_tags = list(get_top_level_related_tags(self.ctx['tags'])) if self.request.user.is_authenticated: qs = Book.tagged.with_all(self.ctx['tags']).filter(findable=True) related_tags.extend(list( @@ -567,8 +586,6 @@ def book_detail(request, slug): 'club_form': ScheduleForm() if book.preview else None, 'club': Club.objects.first() if book.preview else None, 'donation_form': DonationStep1Form(), - - 'EXPERIMENTS_SWITCHABLE_layout': True, })