Add city name field to establishment api representations

This commit is contained in:
Kuroshini 2019-10-16 14:11:07 +03:00
parent 995d55302a
commit 521d7f19f3
4 changed files with 23 additions and 3 deletions

View File

@ -5,7 +5,7 @@ from rest_framework import serializers
from comment import models as comment_models from comment import models as comment_models
from comment.serializers import common as comment_serializers from comment.serializers import common as comment_serializers
from establishment import models from establishment import models
from location.serializers import AddressBaseSerializer, CitySerializer from location.serializers import AddressBaseSerializer, CitySerializer, AddressDetailSerializer
from main.serializers import AwardSerializer, CurrencySerializer from main.serializers import AwardSerializer, CurrencySerializer
from tag.serializers import TagBaseSerializer from tag.serializers import TagBaseSerializer
from timetable.serialziers import ScheduleRUDSerializer from timetable.serialziers import ScheduleRUDSerializer
@ -225,6 +225,16 @@ class EstablishmentBaseSerializer(ProjectModelSerializer):
'currency' 'currency'
] ]
class EstablishmentAddressExtendedSerializer(EstablishmentBaseSerializer):
"""Establishment with city serializer."""
address = AddressDetailSerializer()
class Meta(EstablishmentBaseSerializer.Meta):
"""Meta class."""
fields = EstablishmentBaseSerializer.Meta.fields
class EstablishmentGeoSerializer(EstablishmentBaseSerializer): class EstablishmentGeoSerializer(EstablishmentBaseSerializer):
"""Serializer for Geo view.""" """Serializer for Geo view."""
@ -260,6 +270,8 @@ class EstablishmentDetailSerializer(EstablishmentBaseSerializer):
review = ReviewShortSerializer(source='last_published_review', allow_null=True) review = ReviewShortSerializer(source='last_published_review', allow_null=True)
employees = EstablishmentEmployeeSerializer(source='actual_establishment_employees', employees = EstablishmentEmployeeSerializer(source='actual_establishment_employees',
many=True) many=True)
address = AddressDetailSerializer(read_only=True)
menu = MenuSerializers(source='menu_set', many=True, read_only=True) menu = MenuSerializers(source='menu_set', many=True, read_only=True)
best_price_menu = serializers.DecimalField(max_digits=14, decimal_places=2, read_only=True) best_price_menu = serializers.DecimalField(max_digits=14, decimal_places=2, read_only=True)
best_price_carte = serializers.DecimalField(max_digits=14, decimal_places=2, read_only=True) best_price_carte = serializers.DecimalField(max_digits=14, decimal_places=2, read_only=True)

View File

@ -32,7 +32,7 @@ class EstablishmentListView(EstablishmentMixinView, generics.ListAPIView):
"""Resource for getting a list of establishments.""" """Resource for getting a list of establishments."""
filter_class = filters.EstablishmentFilter filter_class = filters.EstablishmentFilter
serializer_class = serializers.EstablishmentBaseSerializer serializer_class = serializers.EstablishmentAddressExtendedSerializer
class EstablishmentRetrieveView(EstablishmentMixinView, generics.RetrieveAPIView): class EstablishmentRetrieveView(EstablishmentMixinView, generics.RetrieveAPIView):

View File

@ -65,7 +65,6 @@ class EstablishmentDocument(Document):
'number': fields.IntegerField(), 'number': fields.IntegerField(),
'postal_code': fields.KeywordField(), 'postal_code': fields.KeywordField(),
'coordinates': fields.GeoPointField(attr='location_field_indexing'), 'coordinates': fields.GeoPointField(attr='location_field_indexing'),
# todo: remove if not used
'city': fields.ObjectField( 'city': fields.ObjectField(
properties={ properties={
'id': fields.IntegerField(), 'id': fields.IntegerField(),

View File

@ -19,10 +19,19 @@ class TagsDocumentSerializer(serializers.Serializer):
return get_translated_value(obj.label) return get_translated_value(obj.label)
class CityDocumentShortSerializer(serializers.Serializer):
"""City serializer for ES Document,"""
id = serializers.IntegerField()
code = serializers.CharField(allow_null=True)
name = serializers.CharField()
class AddressDocumentSerializer(serializers.Serializer): class AddressDocumentSerializer(serializers.Serializer):
"""Address serializer for ES Document.""" """Address serializer for ES Document."""
id = serializers.IntegerField() id = serializers.IntegerField()
city = CityDocumentShortSerializer()
street_name_1 = serializers.CharField() street_name_1 = serializers.CharField()
street_name_2 = serializers.CharField() street_name_2 = serializers.CharField()
number = serializers.IntegerField() number = serializers.IntegerField()