diff options
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, ] |