summaryrefslogtreecommitdiff
path: root/ishtar_common/rest.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-11-30 18:21:47 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-12-12 12:20:59 +0100
commit1a4606529b2a67ffc21f299fe218492888a5347d (patch)
tree8140a3e882df4659ea3b3cffe6166af2f094781b /ishtar_common/rest.py
parentf97c4a6df252a07e93076f77e46dbf3eee624ce3 (diff)
downloadIshtar-1a4606529b2a67ffc21f299fe218492888a5347d.tar.bz2
Ishtar-1a4606529b2a67ffc21f299fe218492888a5347d.zip
Syndication - fix duplicate on match document - fix many updates from match document
Diffstat (limited to 'ishtar_common/rest.py')
-rw-r--r--ishtar_common/rest.py22
1 files changed, 18 insertions, 4 deletions
diff --git a/ishtar_common/rest.py b/ishtar_common/rest.py
index 90f61f2aa..1ca8824b0 100644
--- a/ishtar_common/rest.py
+++ b/ishtar_common/rest.py
@@ -9,6 +9,7 @@ from rest_framework.response import Response
from rest_framework.views import APIView
from ishtar_common import models_rest
+from ishtar_common.models_common import GeneralType
from ishtar_common.views_item import get_item
from ishtar_common.serializers_utils import generic_get_results
@@ -88,12 +89,25 @@ class FacetAPIView(APIView):
continue
ct_model = f"{model._meta.app_label}.{model._meta.model_name}"
values[ct_model] = []
- for type in select_form.TYPES:
+ search_types = [
+ (search_type.key, search_type.model)
+ for search_type in select_form.TYPES
+ ]
+ for key in select_form.base_fields:
+ field = select_form.base_fields[key]
+ associated_model = getattr(field.widget, "associated_model", None)
+ if (
+ associated_model
+ and issubclass(associated_model, GeneralType)
+ and (key, associated_model) not in search_types
+ ):
+ search_types.append((key, associated_model))
+ for associated_key, associated_model in search_types:
values_ct = []
- for item in type.model.objects.filter(available=True).all():
+ for item in associated_model.objects.filter(available=True).all():
key = item.slug if hasattr(item, "slug") else item.txt_idx
values_ct.append((key, str(item)))
- search_key = model.ALT_NAMES[type.key].search_key
+ search_key = model.ALT_NAMES[associated_key].search_key
search_keys = []
for language_code, language_lbl in settings.LANGUAGES:
activate(language_code)
@@ -101,7 +115,7 @@ class FacetAPIView(APIView):
deactivate()
values[ct_model].append(
[
- f"{type.model._meta.app_label}.{type.model._meta.model_name}",
+ f"{associated_model._meta.app_label}.{associated_model._meta.model_name}",
search_keys,
values_ct,
]