diff options
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 |
commit | 1a4606529b2a67ffc21f299fe218492888a5347d (patch) | |
tree | 8140a3e882df4659ea3b3cffe6166af2f094781b /ishtar_common/rest.py | |
parent | f97c4a6df252a07e93076f77e46dbf3eee624ce3 (diff) | |
download | Ishtar-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.py | 22 |
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, ] |