From 2fe0ce86d3a6a733fd27716eaaa047d9e365b9a5 Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Thu, 26 Sep 2019 17:40:09 +0300 Subject: [PATCH] Refactor elastic serializer --- apps/search_indexes/serializers.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/apps/search_indexes/serializers.py b/apps/search_indexes/serializers.py index 56af9f5b..73652ef6 100644 --- a/apps/search_indexes/serializers.py +++ b/apps/search_indexes/serializers.py @@ -46,6 +46,7 @@ class EstablishmentDocumentSerializer(DocumentSerializer): description_translated = serializers.SerializerMethodField(allow_null=True) + preview_image = serializers.URLField(source='preview_image_url') class Meta: """Meta class.""" @@ -63,7 +64,7 @@ class EstablishmentDocumentSerializer(DocumentSerializer): 'collections', 'establishment_type', 'establishment_subtypes', - 'preview_image_url', + 'preview_image', 'slug', ) @@ -73,11 +74,19 @@ class EstablishmentDocumentSerializer(DocumentSerializer): def to_representation(self, instance): ret = super().to_representation(instance) - dict_merge = lambda a, b: a.update(b) or a - ret['tags'] = map(lambda tag: dict_merge(tag, {'label_translated': get_translated_value(tag.pop('label'))}), ret['tags']) - ret['establishment_subtypes'] = map(lambda subtype: dict_merge(subtype, {'name_translated': get_translated_value(subtype.pop('name'))}), ret['establishment_subtypes']) + + ret['tags'] = map(lambda tag: dict_merge(tag, {'label_translated': get_translated_value(tag.pop('label'))}), + ret['tags']) + ret['establishment_subtypes'] = map( + lambda subtype: dict_merge(subtype, {'name_translated': get_translated_value(subtype.pop('name'))}), + ret['establishment_subtypes']) if ret.get('establishment_type'): ret['establishment_type']['name_translated'] = get_translated_value(ret['establishment_type'].pop('name')) - ret['address']['city']['country']['name_translated'] = get_translated_value(ret['address']['city']['country'].pop('name')) + if ret.get('address'): + ret['address']['city']['country']['name_translated'] = get_translated_value( + ret['address']['city']['country'].pop('name')) + + ret['type'] = ret.pop('establishment_type') + ret['subtypes'] = ret.pop('establishment_subtypes') return ret \ No newline at end of file