"""Establishment app views.""" from django.shortcuts import get_object_or_404 from rest_framework import generics from establishment import models, serializers from timetable.serialziers import ScheduleRUDSerializer, ScheduleCreateSerializer 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 EstablishmentTagCategoryListView(EstablishmentMixinViews, generics.ListAPIView): """View for establishment tag categories.""" serializer_class = serializers.EstablishmentTagCategoryListSerializer pagination_class = None def get_object(self): """ Returns the object the view is displaying. """ queryset = super(EstablishmentTagCategoryListView, self).get_queryset() # Perform the lookup filtering. lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field filter_kwargs = {self.lookup_field: self.kwargs[lookup_url_kwarg]} obj = get_object_or_404(queryset, **filter_kwargs) # May raise a permission denied self.check_object_permissions(self.request, obj) return obj def get_queryset(self): """Overridden get_queryset method.""" establishment = self.get_object() return establishment.establishment_type.tag_categories.all() 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.EstablishmentTypeSerializer queryset = models.EstablishmentType.objects.all() pagination_class = None class EstablishmentTypeRUDView(generics.RetrieveUpdateDestroyAPIView): """Establishment type retrieve/update/destroy view.""" serializer_class = serializers.EstablishmentTypeSerializer queryset = models.EstablishmentType.objects.all() class EstablishmentSubtypeListCreateView(generics.ListCreateAPIView): """Establishment subtype list/create view.""" serializer_class = serializers.EstablishmentSubTypeSerializer queryset = models.EstablishmentSubType.objects.all() pagination_class = None class EstablishmentSubtypeRUDView(generics.RetrieveUpdateDestroyAPIView): """Establishment subtype retrieve/update/destroy view.""" serializer_class = serializers.EstablishmentSubTypeSerializer queryset = models.EstablishmentSubType.objects.all() class EstablishmentTagListCreateView(generics.ListCreateAPIView): """Establishment tag list/create view.""" serializer_class = serializers.EstablishmentTagListSerializer queryset = models.EstablishmentTag.objects.all()