X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/a7c64b2ae44b54daac2d4bce4dc0c2d675e04504..9b533fdbfd08bd764744ae3a0d4717c87b61cf18:/src/catalogue/views.py?ds=sidebyside diff --git a/src/catalogue/views.py b/src/catalogue/views.py index 80e97271..097c5493 100644 --- a/src/catalogue/views.py +++ b/src/catalogue/views.py @@ -1,8 +1,9 @@ # This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # +import json from django.apps import apps -from django.db.models import Prefetch +from django.db.models import Prefetch, Q from django.http import Http404, JsonResponse from django.urls import reverse from django.utils.formats import localize_input @@ -219,7 +220,29 @@ class ThemaChooser(Chooser): res = res[0]['sub'] return res - for thema in self.queryset.all(): + def apply_filter(filt): + if 'not' in filt: + return ~apply_filter(filt['not']) + if 'startswith' in filt: + q = None + for prefix in filt['startswith']: + q2 = Q(code__startswith=prefix) + if q: + q |= q2 + else: + q = q2 + return q + assert False + + qs = self.queryset + try: + filt = json.loads(request.GET.get('filter')) + except: + pass + else: + qs = qs.filter(apply_filter(filt)) + + for thema in qs: populate(thema) missing = list(getmissing(tree)) @@ -384,10 +407,10 @@ def publish_collection(request, pk): @login_required def woblink_autocomplete(request, category): - shop = depot.models.Shop.objects.filter(shop='woblink').first() - if shop is None: + site = depot.models.Site.objects.filter(site_type='woblink').first() + if site is None: return JsonResponse({}) - woblink = shop.get_publisher() + woblink = site.get_publisher() term = request.GET.get('term') if not term: return JsonResponse({})