Added MenuFiles serializer

This commit is contained in:
dormantman 2020-01-31 00:13:15 +03:00
parent fbed631f40
commit a0408204a1
3 changed files with 29 additions and 12 deletions

View File

@ -1,15 +1,16 @@
from functools import lru_cache from functools import lru_cache
from account.serializers.common import UserShortSerializer
from django.db.models import F from django.db.models import F
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from rest_framework import serializers
from account.serializers.common import UserShortSerializer
from establishment import models, serializers as model_serializers from establishment import models, serializers as model_serializers
from establishment.models import ContactEmail, ContactPhone, EstablishmentEmployee from establishment.models import ContactEmail, ContactPhone, EstablishmentEmployee
from gallery.models import Image from gallery.models import Image
from location.serializers import AddressDetailSerializer, TranslatedField from location.serializers import AddressDetailSerializer, TranslatedField
from main.models import Currency from main.models import Currency
from main.serializers import AwardSerializer from main.serializers import AwardSerializer
from rest_framework import serializers
from utils.decorators import with_base_attributes from utils.decorators import with_base_attributes
from utils.serializers import ImageBaseSerializer, ProjectModelSerializer, TimeZoneChoiceField from utils.serializers import ImageBaseSerializer, ProjectModelSerializer, TimeZoneChoiceField
@ -699,8 +700,6 @@ class MenuGallerySerializer(serializers.ModelSerializer):
class MenuFilesSerializers(ProjectModelSerializer): class MenuFilesSerializers(ProjectModelSerializer):
menu = serializers.IntegerField(write_only=True)
class Meta: class Meta:
model = models.MenuFiles model = models.MenuFiles
fields = [ fields = [
@ -708,14 +707,10 @@ class MenuFilesSerializers(ProjectModelSerializer):
'name', 'name',
'type', 'type',
'file', 'file',
'menu'
] ]
def create(self, validated_data): def create(self, validated_data):
menu_id = validated_data.pop('menu')
menu = get_object_or_404(models.Menu, pk=menu_id)
instance = models.MenuFiles.objects.create(**validated_data) instance = models.MenuFiles.objects.create(**validated_data)
menu.uploads.add(instance)
return instance return instance

View File

@ -37,6 +37,8 @@ urlpatterns = [
name='menu-dishes-gallery-create-destroy'), name='menu-dishes-gallery-create-destroy'),
path('menus/', views.MenuListCreateView.as_view(), name='menu-list'), path('menus/', views.MenuListCreateView.as_view(), name='menu-list'),
path('menus/<int:pk>/', views.MenuRUDView.as_view(), name='menu-rud'), path('menus/<int:pk>/', views.MenuRUDView.as_view(), name='menu-rud'),
path('menus/uploads/', views.MenuUploadsRUDView.as_view(), name='menu-uploads-rud'),
path('menus/uploads/create/', views.MenuUploadsCreateView.as_view(), name='menu-uploads-create'),
path('plates/', views.PlateListCreateView.as_view(), name='plates'), path('plates/', views.PlateListCreateView.as_view(), name='plates'),
path('plates/<int:pk>/', views.PlateRUDView.as_view(), name='plate-rud'), path('plates/<int:pk>/', views.PlateRUDView.as_view(), name='plate-rud'),
path('social_choice/', views.SocialChoiceListCreateView.as_view(), name='socials_choice'), path('social_choice/', views.SocialChoiceListCreateView.as_view(), name='socials_choice'),

View File

@ -3,7 +3,7 @@ from django.db.models.query_utils import Q
from django.http import Http404 from django.http import Http404
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from django_filters.rest_framework import DjangoFilterBackend from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import generics, status, response from rest_framework import generics, response, status
from rest_framework.response import Response from rest_framework.response import Response
from account.models import User from account.models import User
@ -160,11 +160,11 @@ class MenuListCreateView(generics.ListCreateAPIView):
serializer_class = serializers.MenuBackOfficeSerializer serializer_class = serializers.MenuBackOfficeSerializer
queryset = models.Menu.objects.with_base_related() queryset = models.Menu.objects.with_base_related()
# permission_classes = get_permission_classes( # permission_classes = get_permission_classes(
# IsEstablishmentManager, # IsEstablishmentManager,
# IsEstablishmentAdministrator, # IsEstablishmentAdministrator,
# ) # )
from rest_framework.permissions import AllowAny from rest_framework.permissions import AllowAny
permission_classes = (AllowAny, ) permission_classes = (AllowAny,)
filter_backends = (DjangoFilterBackend,) filter_backends = (DjangoFilterBackend,)
filterset_fields = ( filterset_fields = (
@ -183,6 +183,26 @@ class MenuRUDView(generics.RetrieveUpdateDestroyAPIView):
) )
class MenuUploadsRUDView(generics.RetrieveDestroyAPIView):
"""Menu uploads RUD view."""
serializer_class = serializers.MenuFilesSerializers
queryset = models.MenuFiles.objects.all()
permission_classes = get_permission_classes(
IsEstablishmentManager,
IsEstablishmentAdministrator,
)
class MenuUploadsCreateView(generics.CreateAPIView):
"""Menu uploads list view"""
serializer_class = serializers.MenuFilesSerializers
queryset = models.MenuFiles.objects.all()
permission_classes = get_permission_classes(
IsEstablishmentManager,
IsEstablishmentAdministrator,
)
class SocialChoiceListCreateView(generics.ListCreateAPIView): class SocialChoiceListCreateView(generics.ListCreateAPIView):
"""SocialChoice list create view.""" """SocialChoice list create view."""
serializer_class = serializers.SocialChoiceSerializers serializer_class = serializers.SocialChoiceSerializers