changed files

This commit is contained in:
Anatoly 2019-10-10 15:10:43 +03:00
parent e435d71e00
commit f83b735eb3
6 changed files with 116 additions and 8 deletions

View File

@ -0,0 +1,14 @@
# Generated by Django 2.2.4 on 2019-10-09 14:57
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('establishment', '0033_auto_20191009_0715'),
('establishment', '0033_auto_20191003_0943_squashed_0034_auto_20191003_1036'),
]
operations = [
]

View File

@ -479,6 +479,7 @@ class ContactEmail(models.Model):
def __str__(self): def __str__(self):
return f'{self.email}' return f'{self.email}'
# #
# class Wine(TranslatedFieldsMixin, models.Model): # class Wine(TranslatedFieldsMixin, models.Model):
# """Wine model.""" # """Wine model."""
@ -586,6 +587,11 @@ class EstablishmentTypeTagCategoryQuerySet(models.QuerySet):
"""Return establishment tags by country code""" """Return establishment tags by country code"""
return self.filter(tag_category__country__code=code) return self.filter(tag_category__country__code=code)
def with_base_related(self):
"""Return with related relations."""
# return self.select_related('tags', 'establishment_type')
return self.select_related('establishment_type', 'tag_category')
class EstablishmentTypeTagCategory(models.Model): class EstablishmentTypeTagCategory(models.Model):
"""Tag categories based on establishment type.""" """Tag categories based on establishment type."""
@ -602,3 +608,24 @@ class EstablishmentTypeTagCategory(models.Model):
class Meta: class Meta:
verbose_name = _('establishment type tag categories') verbose_name = _('establishment type tag categories')
verbose_name_plural = _('establishment type tag categories') verbose_name_plural = _('establishment type tag categories')
# class EstablishmentSubTypeTagCategoryQuerySet(models.QuerySet):
# """QuerySet for tag categories based on establishment subtype."""
#
#
# class EstablishmentSubTypeTagCategory(models.Model):
# """Tag categories based on establishment subtype."""
# establishment_subtype = models.ForeignKey(EstablishmentSubType,
# on_delete=models.CASCADE,
# related_name='tag_categories',
# verbose_name=_('establishment subtype'))
# tag_category = models.ForeignKey('tag.TagCategory',
# on_delete=models.CASCADE,
# related_name='est_subtype_tag_categories',
# verbose_name=_('tag category'))
# objects = EstablishmentSubTypeTagCategoryQuerySet.as_manager()
#
# class Meta:
# verbose_name = _('establishment subtype tag categories')
# verbose_name_plural = _('establishment subtype tag categories')

View File

@ -1,13 +1,12 @@
from rest_framework import serializers from rest_framework import serializers
from establishment import models from establishment import models
from establishment.serializers import ( from establishment.serializers import (
EstablishmentBaseSerializer, PlateSerializer, ContactEmailsSerializer, EstablishmentBaseSerializer, PlateSerializer, ContactEmailsSerializer,
ContactPhonesSerializer, SocialNetworkRelatedSerializers, ContactPhonesSerializer, SocialNetworkRelatedSerializers,
EstablishmentTypeSerializer) EstablishmentTypeSerializer)
from utils.decorators import with_base_attributes
from main.models import Currency from main.models import Currency
from utils.decorators import with_base_attributes
class EstablishmentListCreateSerializer(EstablishmentBaseSerializer): class EstablishmentListCreateSerializer(EstablishmentBaseSerializer):

View File

@ -89,11 +89,11 @@ class MenuRUDSerializers(ProjectModelSerializer):
] ]
class EstablishmentTagCategoryListSerializer(serializers.ModelSerializer): class EstablishmentTypeTagCategoryBaseSerializer(serializers.ModelSerializer):
"""Serializer for intermediate model EstablishmentTypeTagCategories.""" """Serializer for intermediate model EstablishmentTypeTagCategories."""
id = serializers.IntegerField(source='tag_category.id') id = serializers.IntegerField(source='tag_category.id', read_only=True)
label_translated = TranslatedField(source='tag_category.label_translated') label_translated = TranslatedField(source='tag_category.label_translated')
tags = TagBaseSerializer(source='tag_category.tags', many=True) tags = TagBaseSerializer(source='tag_category.tags', many=True, read_only=True)
class Meta: class Meta:
"""Meta class.""" """Meta class."""
@ -102,7 +102,21 @@ class EstablishmentTagCategoryListSerializer(serializers.ModelSerializer):
'id', 'id',
'label_translated', 'label_translated',
'tags', 'tags',
'establishment_type',
'tag_category',
] ]
extra_kwargs = {
'establishment_type': {'write_only': True},
'tag_category': {'write_only': True},
}
def validate(self, attrs):
"""Override validate method."""
if models.EstablishmentTypeTagCategory.objects.filter(
establishment_type=attrs.get('establishment_type'),
tag_category=attrs.get('tag_category')).exists():
raise serializers.ValidationError(detail={'detail': _('Objects is already attached.')})
return attrs
class EstablishmentTypeSerializer(serializers.ModelSerializer): class EstablishmentTypeSerializer(serializers.ModelSerializer):
@ -136,6 +150,30 @@ class EstablishmentSubTypeSerializer(serializers.ModelSerializer):
} }
# class EstablishmentSubTypeTagCategoryBaseSerializer(serializers.ModelSerializer):
# """Serializer for intermediate model EstablishmentSubTypeTagCategories."""
#
# class Meta:
# """Meta class."""
# model = models.EstablishmentSubTypeTagCategory
# fields = [
# 'establishment_subtype',
# 'tag_category',
# ]
# extra_kwargs = {
# 'establishment_subtype': {'write_only': True},
# 'tag_category': {'write_only': True},
# }
#
# def validate(self, attrs):
# """Override validate method."""
# if models.EstablishmentSubTypeTagCategory.objects.filter(
# establishment_type=attrs.get('establishment_subtype'),
# tag_category=attrs.get('tag_category')).exists():
# raise serializers.ValidationError(detail={'detail': _('Objects is already attached.')})
# return attrs
class ReviewSerializer(serializers.ModelSerializer): class ReviewSerializer(serializers.ModelSerializer):
"""Serializer for model Review.""" """Serializer for model Review."""
text_translated = serializers.CharField(read_only=True) text_translated = serializers.CharField(read_only=True)

View File

@ -30,6 +30,10 @@ urlpatterns = [
path('employees/<int:pk>/', views.EmployeeRUDView.as_view(), name='employees-rud'), path('employees/<int:pk>/', views.EmployeeRUDView.as_view(), name='employees-rud'),
path('types/', views.EstablishmentTypeListCreateView.as_view(), name='type-list'), path('types/', views.EstablishmentTypeListCreateView.as_view(), name='type-list'),
path('types/<int:pk>/', views.EstablishmentTypeRUDView.as_view(), name='type-rud'), path('types/<int:pk>/', views.EstablishmentTypeRUDView.as_view(), name='type-rud'),
path('types/attach-tag-category/', views.EstablishmentTypeAttachTagCategoryView.as_view(),
name='type-attach-tag-category'),
path('subtypes/', views.EstablishmentSubtypeListCreateView.as_view(), name='subtype-list'), path('subtypes/', views.EstablishmentSubtypeListCreateView.as_view(), name='subtype-list'),
path('subtypes/<int:pk>/', views.EstablishmentSubtypeRUDView.as_view(), name='subtype-rud'), path('subtypes/<int:pk>/', views.EstablishmentSubtypeRUDView.as_view(), name='subtype-rud'),
# path('subtypes/attach-tag-category/', views.EstablishmentSubTypeAttachTagCategoryView.as_view(),
# name='subtype-attach-tag-category'),
] ]

View File

@ -1,8 +1,9 @@
"""Establishment app views.""" """Establishment app views."""
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from rest_framework import generics from rest_framework import generics, status
from establishment import models, serializers from establishment import models, serializers
from rest_framework.response import Response
from timetable.serialziers import ScheduleRUDSerializer, ScheduleCreateSerializer from timetable.serialziers import ScheduleRUDSerializer, ScheduleCreateSerializer
@ -55,7 +56,7 @@ class EstablishmentScheduleCreateView(generics.CreateAPIView):
class EstablishmentTagCategoryListView(EstablishmentMixinViews, generics.ListAPIView): class EstablishmentTagCategoryListView(EstablishmentMixinViews, generics.ListAPIView):
"""View for establishment tag categories.""" """View for establishment tag categories."""
serializer_class = serializers.EstablishmentTagCategoryListSerializer serializer_class = serializers.EstablishmentTypeTagCategoryBaseSerializer
pagination_class = None pagination_class = None
def get_object(self): def get_object(self):
@ -81,6 +82,31 @@ class EstablishmentTagCategoryListView(EstablishmentMixinViews, generics.ListAPI
return establishment.establishment_type.tag_categories.all() return establishment.establishment_type.tag_categories.all()
class EstablishmentTypeAttachTagCategoryView(generics.CreateAPIView):
"""Attach tag category to establishment type."""
serializer_class = serializers.EstablishmentTypeTagCategoryBaseSerializer
def get_queryset(self):
"""Override get_queryset method."""
return models.EstablishmentTypeTagCategory.objects.with_base_related()
def post(self, request, *args, **kwargs):
"""Overridden post-method."""
super(EstablishmentTypeAttachTagCategoryView, self).post(request)
return Response(status=status.HTTP_200_OK)
# class EstablishmentSubTypeAttachTagCategoryView(generics.CreateAPIView):
# """Attach tag category to establishment subtype."""
# queryset = models.EstablishmentSubTypeTagCategory.objects.all()
# serializer_class = serializers.EstablishmentSubTypeTagCategoryBaseSerializer
#
# def post(self, request, *args, **kwargs):
# """Overridden post-method."""
# super(EstablishmentSubTypeAttachTagCategoryView, self).post(request)
# return Response(status=status.HTTP_200_OK)
class MenuListCreateView(generics.ListCreateAPIView): class MenuListCreateView(generics.ListCreateAPIView):
"""Menu list create view.""" """Menu list create view."""
serializer_class = serializers.MenuSerializers serializer_class = serializers.MenuSerializers