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 tag.serializers import TagBaseSerializer
from establishment import models
from establishment.serializers import (
EstablishmentBaseSerializer, PlateSerializer, ContactEmailsSerializer,
@ -7,7 +6,6 @@ from establishment.serializers import (
EstablishmentTypeSerializer)
from utils.decorators import with_base_attributes
from utils.serializers import TranslatedField
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):
"""Social network serializers."""
class Meta:

View File

@ -1,17 +1,20 @@
"""Establishment serializers."""
from django.utils.translation import ugettext_lazy as _
from rest_framework import serializers
from comment import models as comment_models
from comment.serializers import common as comment_serializers
from establishment import models
from favorites.models import Favorites
from location.serializers import AddressBaseSerializer
from main.serializers import AwardSerializer, CurrencySerializer
from tag import models as tag_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 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):
@ -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):
"""Serializer for EstablishmentType model."""
@ -158,18 +177,17 @@ class EstablishmentCategoryTagListSerializer(serializers.ModelSerializer):
]
class EstablishmentTagListSerializer(serializers.ModelSerializer):
"""Serializer for establishment tags."""
label_translated = TranslatedField(source='tag.label_translated')
category = EstablishmentCategoryTagListSerializer(source='tag.category')
class EstablishmentTagSerializer(serializers.ModelSerializer):
"""Serializer for intermediate model EstablishmentTag."""
id = serializers.IntegerField(source='tag.id')
label_translated = serializers.CharField(source='tag.label_translated')
class Meta:
"""Meta class."""
model = tag_models.Tag
model = models.EstablishmentTag
fields = [
'id',
'label_translated',
'category',
'label_translated'
]
@ -180,7 +198,7 @@ class EstablishmentBaseSerializer(ProjectModelSerializer):
slug = serializers.SlugField(allow_blank=False, required=True, max_length=50)
address = AddressBaseSerializer()
in_favorites = serializers.BooleanField(allow_null=True)
tags = EstablishmentTagListSerializer(many=True)
tags = EstablishmentTagSerializer(many=True)
class Meta:
"""Meta class."""

View File

@ -7,7 +7,6 @@ app_name = 'establishment'
urlpatterns = [
path('', views.EstablishmentListView.as_view(), name='list'),
path('tags/', views.EstablishmentTagListView.as_view(), name='tags'),
path('recent-reviews/', views.EstablishmentRecentReviewListView.as_view(),
name='recent-reviews'),
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()
class EstablishmentTagListCreateView(generics.ListCreateAPIView):
"""Establishment tag list/create view."""
serializer_class = serializers.EstablishmentTagListSerializer
queryset = models.EstablishmentTag.objects.all()
# todo: next task
# class EstablishmentTagListCreateView(generics.CreateAPIView):
# """Establishment tag list/create view."""
# 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()
if v is not None})
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')