Merge branch 'develop' into feature/refactor-establishments
This commit is contained in:
commit
6806d0b216
|
|
@ -46,6 +46,7 @@ class EstablishmentDocumentSerializer(DocumentSerializer):
|
||||||
|
|
||||||
description_translated = serializers.SerializerMethodField(allow_null=True)
|
description_translated = serializers.SerializerMethodField(allow_null=True)
|
||||||
|
|
||||||
|
preview_image = serializers.URLField(source='preview_image_url')
|
||||||
class Meta:
|
class Meta:
|
||||||
"""Meta class."""
|
"""Meta class."""
|
||||||
|
|
||||||
|
|
@ -53,7 +54,6 @@ class EstablishmentDocumentSerializer(DocumentSerializer):
|
||||||
fields = (
|
fields = (
|
||||||
'id',
|
'id',
|
||||||
'name',
|
'name',
|
||||||
'description',
|
|
||||||
'public_mark',
|
'public_mark',
|
||||||
'toque_number',
|
'toque_number',
|
||||||
'price_level',
|
'price_level',
|
||||||
|
|
@ -63,10 +63,34 @@ class EstablishmentDocumentSerializer(DocumentSerializer):
|
||||||
'collections',
|
'collections',
|
||||||
'establishment_type',
|
'establishment_type',
|
||||||
'establishment_subtypes',
|
'establishment_subtypes',
|
||||||
'preview_image_url',
|
'preview_image',
|
||||||
'slug',
|
'slug',
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_description_translated(obj):
|
def get_description_translated(obj):
|
||||||
return get_translated_value(obj.description)
|
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
|
||||||
|
|
@ -17,4 +17,6 @@ def get_translated_value(value):
|
||||||
return None
|
return None
|
||||||
elif not isinstance(value, dict):
|
elif not isinstance(value, dict):
|
||||||
field_dict = value.to_dict()
|
field_dict = value.to_dict()
|
||||||
|
elif isinstance(value, dict):
|
||||||
|
field_dict = value
|
||||||
return field_dict.get(get_current_language())
|
return field_dict.get(get_current_language())
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import pytz
|
import pytz
|
||||||
from datetime import datetime
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
from rest_framework.test import APITestCase
|
from rest_framework.test import APITestCase
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
|
|
@ -52,17 +52,18 @@ class TranslateFieldTests(BaseTestCase):
|
||||||
},
|
},
|
||||||
description={"en-GB": "Test description"},
|
description={"en-GB": "Test description"},
|
||||||
playlist=1,
|
playlist=1,
|
||||||
start=datetime.now(pytz.utc),
|
start=datetime.now(pytz.utc) + timedelta(hours=-13),
|
||||||
end=datetime.now(pytz.utc),
|
end=datetime.now(pytz.utc) + timedelta(hours=13),
|
||||||
is_publish=True,
|
is_publish=True,
|
||||||
news_type=self.news_type
|
news_type=self.news_type,
|
||||||
|
slug='test',
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_model_field(self):
|
def test_model_field(self):
|
||||||
self.assertIsNotNone(getattr(self.news_item, "title_translated", None))
|
self.assertIsNotNone(getattr(self.news_item, "title_translated", None))
|
||||||
|
|
||||||
def test_read_locale(self):
|
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)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
news_data = response.json()
|
news_data = response.json()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user