diff --git a/apps/news/serializers.py b/apps/news/serializers.py index 2b4e98b6..27d50977 100644 --- a/apps/news/serializers.py +++ b/apps/news/serializers.py @@ -97,6 +97,7 @@ class CropImageSerializer(serializers.Serializer): class NewsImageSerializer(serializers.ModelSerializer): """Serializer for returning crop images of news image.""" + orientation_display = serializers.CharField(source='get_orientation_display', read_only=True) original_url = serializers.URLField(source='image.url') diff --git a/apps/search_indexes/documents/establishment.py b/apps/search_indexes/documents/establishment.py index 665fc85d..88f7e44a 100644 --- a/apps/search_indexes/documents/establishment.py +++ b/apps/search_indexes/documents/establishment.py @@ -10,6 +10,16 @@ EstablishmentIndex = Index(settings.ELASTICSEARCH_INDEX_NAMES.get(__name__, EstablishmentIndex.settings(number_of_shards=1, number_of_replicas=1) +# todo: check & refactor +class ObjectField(fields.ObjectField): + + def get_value_from_instance(self, *args, **kwargs): + value = super(ObjectField, self).get_value_from_instance(*args, **kwargs) + if value == {}: + return None + return value + + @EstablishmentIndex.doc_type class EstablishmentDocument(Document): """Establishment document.""" @@ -22,14 +32,13 @@ class EstablishmentDocument(Document): 'id': fields.IntegerField(), 'name': fields.ObjectField(attr='name_indexing', properties=OBJECT_FIELD_PROPERTIES), + 'index_name': fields.KeywordField(attr='index_name'), }) establishment_subtypes = fields.ObjectField( properties={ 'id': fields.IntegerField(), - 'name': fields.ObjectField(attr='name_indexing', - properties={ - 'id': fields.IntegerField(), - }), + 'name': fields.ObjectField(attr='name_indexing'), + 'index_name': fields.KeywordField(attr='index_name'), }, multi=True) works_evening = fields.ListField(fields.IntegerField( @@ -54,7 +63,7 @@ class EstablishmentDocument(Document): 'closed_at': fields.KeywordField(attr='closed_at_str'), } )) - address = fields.ObjectField( + address = ObjectField( properties={ 'id': fields.IntegerField(), 'street_name_1': fields.TextField( @@ -82,7 +91,7 @@ class EstablishmentDocument(Document): ), } ), - } + }, ) # todo: need to fix # collections = fields.ObjectField( diff --git a/apps/search_indexes/serializers.py b/apps/search_indexes/serializers.py index d4ab2dbf..cb1fe735 100644 --- a/apps/search_indexes/serializers.py +++ b/apps/search_indexes/serializers.py @@ -75,7 +75,7 @@ class NewsDocumentSerializer(DocumentSerializer): class EstablishmentDocumentSerializer(DocumentSerializer): """Establishment document serializer.""" - address = AddressDocumentSerializer() + address = AddressDocumentSerializer(allow_null=True) tags = TagsDocumentSerializer(many=True) schedule = ScheduleDocumentSerializer(many=True, allow_null=True) diff --git a/apps/search_indexes/views.py b/apps/search_indexes/views.py index 25205bac..fd1c5b7a 100644 --- a/apps/search_indexes/views.py +++ b/apps/search_indexes/views.py @@ -124,6 +124,15 @@ class EstablishmentDocumentViewSet(BaseDocumentViewSet): 'establishment_subtypes': { 'field': 'establishment_subtypes.id' }, + 'type': { + 'field': 'establishment_type.index_name' + }, + 'subtype': { + 'field': 'establishment_subtypes.index_name', + 'lookups': [ + constants.LOOKUP_QUERY_IN, + ], + }, 'works_noon': { 'field': 'works_noon', 'lookups': [