refactored EstablishmentBase serializer

This commit is contained in:
Anatoly 2019-10-09 14:11:53 +03:00
parent ca5f588466
commit 2191a505a5
5 changed files with 33 additions and 46 deletions

View File

@ -1,5 +1,4 @@
from rest_framework import serializers from rest_framework import serializers
from tag.serializers import TagBaseSerializer
from establishment import models from establishment import models
from establishment.serializers import ( from establishment.serializers import (
EstablishmentBaseSerializer, PlateSerializer, ContactEmailsSerializer, EstablishmentBaseSerializer, PlateSerializer, ContactEmailsSerializer,
@ -7,7 +6,6 @@ from establishment.serializers import (
EstablishmentTypeSerializer) EstablishmentTypeSerializer)
from utils.decorators import with_base_attributes from utils.decorators import with_base_attributes
from utils.serializers import TranslatedField
from main.models import Currency from main.models import Currency
@ -76,22 +74,6 @@ class EstablishmentRUDSerializer(EstablishmentBaseSerializer):
] ]
class EstablishmentTagCategoryListSerializer(serializers.ModelSerializer):
"""Serializer for intermediate model EstablishmentTypeTagCategories."""
id = serializers.IntegerField(source='tag_category.id')
label_translated = TranslatedField(source='tag_category.label_translated')
tags = TagBaseSerializer(source='tag_category.tags', many=True)
class Meta:
"""Meta class."""
model = models.EstablishmentTypeTagCategory
fields = [
'id',
'label_translated',
'tags',
]
class SocialNetworkSerializers(serializers.ModelSerializer): class SocialNetworkSerializers(serializers.ModelSerializer):
"""Social network serializers.""" """Social network serializers."""
class Meta: class Meta:

View File

@ -1,17 +1,20 @@
"""Establishment serializers.""" """Establishment serializers."""
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from rest_framework import serializers 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 favorites.models import Favorites from favorites.models import Favorites
from location.serializers import AddressBaseSerializer from location.serializers import AddressBaseSerializer
from main.serializers import AwardSerializer, CurrencySerializer from main.serializers import AwardSerializer, CurrencySerializer
from tag import models as tag_models
from review import models as review_models from review import models as review_models
from tag import models as tag_models
from tag.serializers import TagBaseSerializer
from timetable.serialziers import ScheduleRUDSerializer from timetable.serialziers import ScheduleRUDSerializer
from utils import exceptions as utils_exceptions from utils import exceptions as utils_exceptions
from utils.serializers import TranslatedField, ProjectModelSerializer from utils.serializers import ProjectModelSerializer
from utils.serializers import TranslatedField
class ContactPhonesSerializer(serializers.ModelSerializer): class ContactPhonesSerializer(serializers.ModelSerializer):
@ -86,6 +89,22 @@ class MenuRUDSerializers(ProjectModelSerializer):
] ]
class EstablishmentTagCategoryListSerializer(serializers.ModelSerializer):
"""Serializer for intermediate model EstablishmentTypeTagCategories."""
id = serializers.IntegerField(source='tag_category.id')
label_translated = TranslatedField(source='tag_category.label_translated')
tags = TagBaseSerializer(source='tag_category.tags', many=True)
class Meta:
"""Meta class."""
model = models.EstablishmentTypeTagCategory
fields = [
'id',
'label_translated',
'tags',
]
class EstablishmentTypeSerializer(serializers.ModelSerializer): class EstablishmentTypeSerializer(serializers.ModelSerializer):
"""Serializer for EstablishmentType model.""" """Serializer for EstablishmentType model."""
@ -158,18 +177,17 @@ class EstablishmentCategoryTagListSerializer(serializers.ModelSerializer):
] ]
class EstablishmentTagListSerializer(serializers.ModelSerializer): class EstablishmentTagSerializer(serializers.ModelSerializer):
"""Serializer for establishment tags.""" """Serializer for intermediate model EstablishmentTag."""
label_translated = TranslatedField(source='tag.label_translated') id = serializers.IntegerField(source='tag.id')
category = EstablishmentCategoryTagListSerializer(source='tag.category') label_translated = serializers.CharField(source='tag.label_translated')
class Meta: class Meta:
"""Meta class.""" """Meta class."""
model = tag_models.Tag model = models.EstablishmentTag
fields = [ fields = [
'id', 'id',
'label_translated', 'label_translated'
'category',
] ]
@ -180,7 +198,7 @@ class EstablishmentBaseSerializer(ProjectModelSerializer):
slug = serializers.SlugField(allow_blank=False, required=True, max_length=50) slug = serializers.SlugField(allow_blank=False, required=True, max_length=50)
address = AddressBaseSerializer() address = AddressBaseSerializer()
in_favorites = serializers.BooleanField(allow_null=True) in_favorites = serializers.BooleanField(allow_null=True)
tags = EstablishmentTagListSerializer(many=True) tags = EstablishmentTagSerializer(many=True)
class Meta: class Meta:
"""Meta class.""" """Meta class."""

View File

@ -7,7 +7,6 @@ app_name = 'establishment'
urlpatterns = [ urlpatterns = [
path('', views.EstablishmentListView.as_view(), name='list'), path('', views.EstablishmentListView.as_view(), name='list'),
path('tags/', views.EstablishmentTagListView.as_view(), name='tags'),
path('recent-reviews/', views.EstablishmentRecentReviewListView.as_view(), path('recent-reviews/', views.EstablishmentRecentReviewListView.as_view(),
name='recent-reviews'), name='recent-reviews'),
path('slug/<slug:slug>/', views.EstablishmentRetrieveView.as_view(), name='detail'), path('slug/<slug:slug>/', views.EstablishmentRetrieveView.as_view(), name='detail'),

View File

@ -184,7 +184,8 @@ class EstablishmentSubtypeRUDView(generics.RetrieveUpdateDestroyAPIView):
queryset = models.EstablishmentSubType.objects.all() queryset = models.EstablishmentSubType.objects.all()
class EstablishmentTagListCreateView(generics.ListCreateAPIView): # todo: next task
"""Establishment tag list/create view.""" # class EstablishmentTagListCreateView(generics.CreateAPIView):
serializer_class = serializers.EstablishmentTagListSerializer # """Establishment tag list/create view."""
queryset = models.EstablishmentTag.objects.all() # serializer_class = serializers.EstablishmentTagCategoryListCreateSerializer
# queryset = models.EstablishmentTag.objects.all()

View File

@ -174,16 +174,3 @@ class EstablishmentNearestRetrieveView(EstablishmentListView, generics.ListAPIVi
return qs.by_distance_from_point(**{k: v for k, v in filter_kwargs.items() return qs.by_distance_from_point(**{k: v for k, v in filter_kwargs.items()
if v is not None}) if v is not None})
return qs return qs
class EstablishmentTagListView(generics.ListAPIView):
"""List view for establishment tags."""
serializer_class = serializers.EstablishmentTagListSerializer
permission_classes = (permissions.AllowAny,)
pagination_class = None
def get_queryset(self):
"""Override get_queryset method"""
return MetaDataContent.objects.by_content_type(app_label='establishment',
model='establishment')\
.distinct('metadata__label')