append city or country to ProductDocumentSerialzier

This commit is contained in:
evgeniy-st 2019-11-20 12:21:55 +03:00
parent d932df4392
commit 7f8f72815e
3 changed files with 49 additions and 9 deletions

View File

@ -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(

View File

@ -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."""

View File

@ -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