Merge branch 'bugfix/format-web-and-search-api' into 'develop'

Bugfix/format web and search api

See merge request gm/gm-backend!32
This commit is contained in:
d.kuzmenko 2019-09-26 14:58:43 +00:00
commit 94bd07d31d
3 changed files with 34 additions and 7 deletions

View File

@ -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."""
@ -53,7 +54,6 @@ class EstablishmentDocumentSerializer(DocumentSerializer):
fields = (
'id',
'name',
'description',
'public_mark',
'toque_number',
'price_level',
@ -63,10 +63,34 @@ class EstablishmentDocumentSerializer(DocumentSerializer):
'collections',
'establishment_type',
'establishment_subtypes',
'preview_image_url',
'preview_image',
'slug',
)
@staticmethod
def get_description_translated(obj):
return get_translated_value(obj.description)
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'])
if ret.get('establishment_type'):
ret['establishment_type']['name_translated'] = get_translated_value(ret['establishment_type'].pop('name'))
if ret.get('address'):
ret['address']['city']['country']['name_translated'] = get_translated_value(
ret['address']['city']['country'].pop('name'))
location = ret['address'].pop('location')
if location:
ret['address']['geo_lon'] = location['lon']
ret['address']['geo_lat'] = location['lat']
ret['type'] = ret.pop('establishment_type')
ret['subtypes'] = ret.pop('establishment_subtypes')
return ret

View File

@ -17,4 +17,6 @@ def get_translated_value(value):
return None
elif not isinstance(value, dict):
field_dict = value.to_dict()
elif isinstance(value, dict):
field_dict = value
return field_dict.get(get_current_language())

View File

@ -1,5 +1,5 @@
import pytz
from datetime import datetime
from datetime import datetime, timedelta
from rest_framework.test import APITestCase
from rest_framework import status
@ -52,17 +52,18 @@ class TranslateFieldTests(BaseTestCase):
},
description={"en-GB": "Test description"},
playlist=1,
start=datetime.now(pytz.utc),
end=datetime.now(pytz.utc),
start=datetime.now(pytz.utc) + timedelta(hours=-13),
end=datetime.now(pytz.utc) + timedelta(hours=13),
is_publish=True,
news_type=self.news_type
news_type=self.news_type,
slug='test',
)
def test_model_field(self):
self.assertIsNotNone(getattr(self.news_item, "title_translated", None))
def test_read_locale(self):
response = self.client.get(f"/api/web/news/{self.news_item.id}/", format='json')
response = self.client.get(f"/api/web/news/slug/{self.news_item.slug}/", format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
news_data = response.json()