diff --git a/apps/establishment/serializers/common.py b/apps/establishment/serializers/common.py index 1e7a153a..3a1a3726 100644 --- a/apps/establishment/serializers/common.py +++ b/apps/establishment/serializers/common.py @@ -99,6 +99,9 @@ class EstablishmentTypeBaseSerializer(serializers.ModelSerializer): name_translated = TranslatedField() default_image_url = serializers.ImageField(source='default_image.image', allow_null=True) + preview_image = serializers.URLField(source='preview_image_url', + allow_null=True, + read_only=True) class Meta: """Meta class.""" @@ -110,6 +113,7 @@ class EstablishmentTypeBaseSerializer(serializers.ModelSerializer): 'use_subtypes', 'index_name', 'default_image_url', + 'preview_image', ] extra_kwargs = { 'name': {'write_only': True}, @@ -135,6 +139,9 @@ class EstablishmentSubTypeBaseSerializer(serializers.ModelSerializer): name_translated = TranslatedField() default_image_url = serializers.ImageField(source='default_image.image', allow_null=True) + preview_image = serializers.URLField(source='preview_image_url', + allow_null=True, + read_only=True) class Meta: """Meta class.""" @@ -146,6 +153,7 @@ class EstablishmentSubTypeBaseSerializer(serializers.ModelSerializer): 'establishment_type', 'index_name', 'default_image_url', + 'preview_image', ] extra_kwargs = { 'name': {'write_only': True}, diff --git a/apps/product/serializers/common.py b/apps/product/serializers/common.py index 67f35064..b892ad01 100644 --- a/apps/product/serializers/common.py +++ b/apps/product/serializers/common.py @@ -36,6 +36,9 @@ class ProductSubTypeBaseSerializer(serializers.ModelSerializer): read_only=True) default_image_url = serializers.ImageField(source='default_image.image', allow_null=True) + preview_image = serializers.URLField(source='preview_image_url', + allow_null=True, + read_only=True) class Meta: model = models.ProductSubType @@ -44,6 +47,7 @@ class ProductSubTypeBaseSerializer(serializers.ModelSerializer): 'name_translated', 'index_name_display', 'default_image_url', + 'preview_image', ] @@ -52,6 +56,9 @@ class ProductTypeBaseSerializer(serializers.ModelSerializer): name_translated = TranslatedField() default_image_url = serializers.ImageField(source='default_image.image', allow_null=True) + preview_image = serializers.URLField(source='preview_image_url', + allow_null=True, + read_only=True) class Meta: model = models.ProductType @@ -60,6 +67,7 @@ class ProductTypeBaseSerializer(serializers.ModelSerializer): 'name_translated', 'index_name', 'default_image_url', + 'preview_image', ] diff --git a/apps/search_indexes/documents/establishment.py b/apps/search_indexes/documents/establishment.py index e520932d..1de349a3 100644 --- a/apps/search_indexes/documents/establishment.py +++ b/apps/search_indexes/documents/establishment.py @@ -24,6 +24,7 @@ class EstablishmentDocument(Document): properties=OBJECT_FIELD_PROPERTIES), 'index_name': fields.KeywordField(attr='index_name'), 'default_image': fields.KeywordField(attr='default_image_url'), + 'preview_image': fields.KeywordField(attr='preview_image_url'), }) establishment_subtypes = fields.ObjectField( properties={ @@ -31,6 +32,7 @@ class EstablishmentDocument(Document): 'name': fields.ObjectField(attr='name_indexing'), 'index_name': fields.KeywordField(attr='index_name'), 'default_image': fields.KeywordField(attr='default_image_url'), + 'preview_image': fields.KeywordField(attr='preview_image_url'), }, multi=True) works_evening = fields.ListField(fields.IntegerField( diff --git a/apps/search_indexes/documents/product.py b/apps/search_indexes/documents/product.py index 3d6ebbd5..fc177500 100644 --- a/apps/search_indexes/documents/product.py +++ b/apps/search_indexes/documents/product.py @@ -20,6 +20,7 @@ class ProductDocument(Document): 'name': fields.ObjectField(attr='name_indexing', properties=OBJECT_FIELD_PROPERTIES), 'index_name': fields.KeywordField(), 'default_image': fields.KeywordField(attr='default_image_url'), + 'preview_image': fields.KeywordField(attr='preview_image_url'), }, ) subtypes = fields.ObjectField( @@ -28,6 +29,7 @@ class ProductDocument(Document): 'name': fields.ObjectField(attr='name_indexing', properties=OBJECT_FIELD_PROPERTIES), 'index_name': fields.KeywordField(), 'default_image': fields.KeywordField(attr='default_image_url'), + 'preview_image': fields.KeywordField(attr='preview_image_url'), }, multi=True ) diff --git a/apps/search_indexes/serializers.py b/apps/search_indexes/serializers.py index 2a183c10..9e01e085 100644 --- a/apps/search_indexes/serializers.py +++ b/apps/search_indexes/serializers.py @@ -27,6 +27,8 @@ class EstablishmentTypeSerializer(serializers.Serializer): id = serializers.IntegerField() name_translated = serializers.SerializerMethodField() index_name = serializers.CharField() + default_image = serializers.CharField() + preview_image = serializers.CharField() def get_name_translated(self, obj): if isinstance(obj, dict): @@ -39,6 +41,8 @@ class ProductSubtypeDocumentSerializer(serializers.Serializer): id = serializers.IntegerField() name_translated = serializers.SerializerMethodField() + default_image = serializers.CharField() + preview_image = serializers.CharField() def get_name_translated(self, obj): if isinstance(obj, dict): @@ -102,6 +106,8 @@ class ProductTypeSerializer(serializers.Serializer): id = serializers.IntegerField() index_name = serializers.CharField() name_translated = serializers.SerializerMethodField() + default_image = serializers.CharField() + preview_image = serializers.CharField() @staticmethod def get_name_translated(obj): diff --git a/apps/utils/models.py b/apps/utils/models.py index ba3b924d..ad74f819 100644 --- a/apps/utils/models.py +++ b/apps/utils/models.py @@ -440,9 +440,11 @@ class HasTagsMixin(models.Model): @property def visible_tags(self): - return self.tags.filter(category__public=True).prefetch_related('category', - 'translation', 'category__translation')\ - .exclude(category__value_type='bool') + return self.tags.filter(category__public=True).prefetch_related( + 'category', + 'translation', + 'category__translation', + ).exclude(category__value_type='bool') class Meta: """Meta class.""" @@ -468,3 +470,8 @@ class TypeDefaultImageMixin: """Return image url.""" if hasattr(self, 'default_image') and self.default_image: return self.default_image.image.url + + @property + def preview_image_url(self): + if hasattr(self, 'default_image') and self.default_image: + return self.default_image.image.get_image_url(thumbnail_key='type_preview') diff --git a/project/settings/base.py b/project/settings/base.py index a7d3274f..93156f71 100644 --- a/project/settings/base.py +++ b/project/settings/base.py @@ -409,6 +409,7 @@ SORL_THUMBNAIL_ALIASES = { 'city_xlarge': {'geometry_string': '560x560', 'crop': 'center'}, 'city_detail': {'geometry_string': '1120x1120', 'crop': 'center'}, 'city_original': {'geometry_string': '2048x1536', 'crop': 'center'}, + 'type_preview': {'geometry_string': '300x260', 'crop': 'center'}, }