gault-millau/apps/establishment/views/back.py
2019-10-14 12:24:26 +03:00

201 lines
7.1 KiB
Python

"""Establishment app views."""
from django.shortcuts import get_object_or_404
from rest_framework import generics, status, permissions
from establishment import models, serializers
from rest_framework.response import Response
from timetable.serialziers import ScheduleRUDSerializer, ScheduleCreateSerializer
from establishment.filters import EstablishmentTypeTagFilter
class EstablishmentMixinViews:
"""Establishment mixin."""
def get_queryset(self):
"""Overrided method 'get_queryset'."""
return models.Establishment.objects.published().with_base_related()
class EstablishmentListCreateView(EstablishmentMixinViews, generics.ListCreateAPIView):
"""Establishment list/create view."""
queryset = models.Establishment.objects.all()
serializer_class = serializers.EstablishmentListCreateSerializer
class EstablishmentRUDView(generics.RetrieveUpdateDestroyAPIView):
queryset = models.Establishment.objects.all()
serializer_class = serializers.EstablishmentRUDSerializer
class EstablishmentScheduleRUDView(generics.RetrieveUpdateDestroyAPIView):
"""Establishment schedule RUD view"""
serializer_class = ScheduleRUDSerializer
def get_object(self):
"""
Returns the object the view is displaying.
"""
establishment_pk = self.kwargs['pk']
schedule_id = self.kwargs['schedule_id']
establishment = get_object_or_404(klass=models.Establishment.objects.all(),
pk=establishment_pk)
schedule = get_object_or_404(klass=establishment.schedule,
id=schedule_id)
# May raise a permission denied
self.check_object_permissions(self.request, establishment)
self.check_object_permissions(self.request, schedule)
return schedule
class EstablishmentScheduleCreateView(generics.CreateAPIView):
"""Establishment schedule Create view"""
serializer_class = ScheduleCreateSerializer
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 EstablishmentTagCreateView(EstablishmentMixinViews, generics.CreateAPIView):
"""Attach tag to establishment."""
serializer_class = serializers.EstablishmentTagCreateSerializer
class MenuListCreateView(generics.ListCreateAPIView):
"""Menu list create view."""
serializer_class = serializers.MenuSerializers
queryset = models.Menu.objects.all()
class MenuRUDView(generics.RetrieveUpdateDestroyAPIView):
"""Menu RUD view."""
serializer_class = serializers.MenuRUDSerializers
queryset = models.Menu.objects.all()
class SocialListCreateView(generics.ListCreateAPIView):
"""Social list create view."""
serializer_class = serializers.SocialNetworkSerializers
queryset = models.SocialNetwork.objects.all()
pagination_class = None
class SocialRUDView(generics.RetrieveUpdateDestroyAPIView):
"""Social RUD view."""
serializer_class = serializers.SocialNetworkSerializers
queryset = models.SocialNetwork.objects.all()
class PlateListCreateView(generics.ListCreateAPIView):
"""Plate list create view."""
serializer_class = serializers.PlatesSerializers
queryset = models.Plate.objects.all()
pagination_class = None
class PlateRUDView(generics.RetrieveUpdateDestroyAPIView):
"""Social RUD view."""
serializer_class = serializers.PlatesSerializers
queryset = models.Plate.objects.all()
class PhonesListCreateView(generics.ListCreateAPIView):
"""Plate list create view."""
serializer_class = serializers.ContactPhoneBackSerializers
queryset = models.ContactPhone.objects.all()
pagination_class = None
class PhonesRUDView(generics.RetrieveUpdateDestroyAPIView):
"""Social RUD view."""
serializer_class = serializers.ContactPhoneBackSerializers
queryset = models.ContactPhone.objects.all()
class EmailListCreateView(generics.ListCreateAPIView):
"""Plate list create view."""
serializer_class = serializers.ContactEmailBackSerializers
queryset = models.ContactEmail.objects.all()
pagination_class = None
class EmailRUDView(generics.RetrieveUpdateDestroyAPIView):
"""Social RUD view."""
serializer_class = serializers.ContactEmailBackSerializers
queryset = models.ContactEmail.objects.all()
class EmployeeListCreateView(generics.ListCreateAPIView):
"""Emplyoee list create view."""
serializer_class = serializers.EmployeeBackSerializers
queryset = models.Employee.objects.all()
pagination_class = None
class EmployeeRUDView(generics.RetrieveUpdateDestroyAPIView):
"""Social RUD view."""
serializer_class = serializers.EmployeeBackSerializers
queryset = models.Employee.objects.all()
class EstablishmentTypeListCreateView(generics.ListCreateAPIView):
"""Establishment type list/create view."""
serializer_class = serializers.EstablishmentTypeBaseSerializer
queryset = models.EstablishmentType.objects.all()
pagination_class = None
class EstablishmentTypeRUDView(generics.RetrieveUpdateDestroyAPIView):
"""Establishment type retrieve/update/destroy view."""
serializer_class = serializers.EstablishmentTypeBaseSerializer
queryset = models.EstablishmentType.objects.all()
class EstablishmentTypeTagListView(generics.ListAPIView):
"""List of tags with categories by establishment type."""
serializer_class = serializers.EstablishmentTagsByType
queryset = models.EstablishmentType.objects.with_base_related()
filter_class = EstablishmentTypeTagFilter
permission_classes = (permissions.AllowAny, )
pagination_class = None
class EstablishmentSubtypeListCreateView(generics.ListCreateAPIView):
"""Establishment subtype list/create view."""
serializer_class = serializers.EstablishmentSubTypeBaseSerializer
queryset = models.EstablishmentSubType.objects.all()
pagination_class = None
class EstablishmentSubtypeRUDView(generics.RetrieveUpdateDestroyAPIView):
"""Establishment subtype retrieve/update/destroy view."""
serializer_class = serializers.EstablishmentSubTypeBaseSerializer
queryset = models.EstablishmentSubType.objects.all()
class EstablishmentSubTypeAttachTagCategoryView(generics.CreateAPIView):
"""Attach tag category to establishment subtype."""
serializer_class = serializers.EstablishmentSubTypeTagCategoryBaseSerializer
def get_queryset(self):
"""Override get_queryset method."""
return models.EstablishmentSubTypeTagCategory.objects.with_base_related()
def post(self, request, *args, **kwargs):
"""Overridden post-method."""
super(EstablishmentSubTypeAttachTagCategoryView, self).post(request)
return Response(status=status.HTTP_200_OK)