diff --git a/api/search_indexes.py b/api/search_indexes.py index 7166740d6..784d623f0 100644 --- a/api/search_indexes.py +++ b/api/search_indexes.py @@ -78,7 +78,12 @@ class EmergenciesIndex(indexes.Indexable, indexes.SearchIndex): countries_id = indexes.MultiValueField( null=True, ) - appeal_type = indexes.CharField(model_attr="appeals__get_atype_display", null=True) + appeals_id = indexes.MultiValueField( + null=True, + ) + appeals_type = indexes.MultiValueField( + null=True, + ) crisis_categorization = indexes.CharField(model_attr="get_ifrc_severity_level_display", null=True) iso3 = indexes.MultiValueField(null=True) visibility = indexes.CharField(model_attr="get_visibility_display", null=True) @@ -96,6 +101,12 @@ def prepare_countries_id(self, obj): def prepare_iso3(self, obj): return [country.iso3 for country in obj.countries.all() if country.iso3] + def prepare_appeals_id(self, obj): + return [appeal.id for appeal in obj.appeals.all()] + + def prepare_appeals_type(self, obj): + return [appeal.get_atype_display() for appeal in obj.appeals.all()] + def index_queryset(self, using=None): return self.get_model().objects.all() diff --git a/api/serializers.py b/api/serializers.py index 7219fe678..40719fdce 100644 --- a/api/serializers.py +++ b/api/serializers.py @@ -2208,6 +2208,11 @@ class SearchMiniCountrySerializer(serializers.Serializer): name = serializers.CharField() +class SearchMiniAppealSerializer(serializers.Serializer): + id = serializers.IntegerField() + atype = serializers.CharField() + + class SearchEmergencySerializer(serializers.Serializer): id = serializers.IntegerField() name = serializers.CharField() @@ -2219,7 +2224,7 @@ class SearchEmergencySerializer(serializers.Serializer): # countries_id = serializers.ListField(child=serializers.IntegerField()) # iso3 = serializers.ListField(child=serializers.CharField()) severity_level_display = serializers.CharField() - appeal_type = serializers.CharField() + appeals = SearchMiniAppealSerializer(many=True) score = serializers.FloatField() severity_level = serializers.IntegerField() diff --git a/api/views.py b/api/views.py index 55e0dfe5f..d88e29eca 100644 --- a/api/views.py +++ b/api/views.py @@ -438,7 +438,7 @@ def get(self, request): "score": data.score, "countries": [{"id": id, "name": name} for id, name in zip(data.countries_id, data.countries)], "severity_level_display": data.crisis_categorization, - "appeal_type": data.appeal_type, + "appeals": [{"id": id, "atype": atype} for id, atype in zip(data.appeals_id, data.appeals_type)], "severity_level": data.severity_level, } for data in emergency_response[:50]