diff --git a/apps/search_indexes/documents/product.py b/apps/search_indexes/documents/product.py index 35b1956a..cdf48ef2 100644 --- a/apps/search_indexes/documents/product.py +++ b/apps/search_indexes/documents/product.py @@ -33,8 +33,25 @@ class ProductDocument(Document): properties={ 'id': fields.IntegerField(), 'name': fields.KeywordField(), + 'index_name': fields.KeywordField(), 'slug': fields.KeywordField(), - # 'city' TODO: city indexing + 'city': fields.ObjectField( + attr='address.city', + properties={ + 'id': fields.IntegerField(), + 'name': fields.KeywordField(), + 'code': fields.KeywordField(), + 'country': fields.ObjectField( + properties={ + 'id': fields.IntegerField(), + 'name': fields.ObjectField(attr='name_indexing', + properties=OBJECT_FIELD_PROPERTIES), + 'code': fields.KeywordField(), + 'svg_image': fields.KeywordField(attr='svg_image_indexing') + } + ), + } + ), } ) wine_colors = fields.ObjectField( diff --git a/apps/search_indexes/serializers.py b/apps/search_indexes/serializers.py index a8391ecc..288d3577 100644 --- a/apps/search_indexes/serializers.py +++ b/apps/search_indexes/serializers.py @@ -95,14 +95,6 @@ class ProductTypeDocumentSerializer(serializers.Serializer): return get_translated_value(obj.name) -class ProductEstablishmentDocumentSerializer(serializers.Serializer): - """Related to Product Establishment ES document serializer.""" - - id = serializers.IntegerField() - name = serializers.CharField() - slug = serializers.CharField() - - class CityDocumentShortSerializer(serializers.Serializer): """City serializer for ES Document,""" @@ -111,6 +103,33 @@ class CityDocumentShortSerializer(serializers.Serializer): name = serializers.CharField() +class CountryDocumentSerializer(serializers.Serializer): + + id = serializers.IntegerField() + code = serializers.CharField(allow_null=True) + svg_image = serializers.CharField() + name_translated = serializers.SerializerMethodField() + + @staticmethod + def get_name_translated(obj): + return get_translated_value(obj.name) + + +class AnotherCityDocumentShortSerializer(CityDocumentShortSerializer): + + country = CountryDocumentSerializer() + + +class ProductEstablishmentDocumentSerializer(serializers.Serializer): + """Related to Product Establishment ES document serializer.""" + + id = serializers.IntegerField() + name = serializers.CharField() + slug = serializers.CharField() + index_name = serializers.CharField() + city = AnotherCityDocumentShortSerializer() + + class AddressDocumentSerializer(serializers.Serializer): """Address serializer for ES Document.""" diff --git a/apps/utils/models.py b/apps/utils/models.py index e508be6f..f86093af 100644 --- a/apps/utils/models.py +++ b/apps/utils/models.py @@ -238,6 +238,10 @@ class SVGImageMixin(models.Model): validators=[svg_image_validator, ], verbose_name=_('SVG image')) + @property + def svg_image_indexing(self): + return self.svg_image.url if self.svg_image else None + class Meta: abstract = True