diff --git a/apps/establishment/serializers/back.py b/apps/establishment/serializers/back.py index 1f39e274..74e7a709 100644 --- a/apps/establishment/serializers/back.py +++ b/apps/establishment/serializers/back.py @@ -5,8 +5,7 @@ from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from account.serializers.common import UserShortSerializer -from establishment import models -from establishment import serializers as model_serializers +from establishment import models, serializers as model_serializers from establishment.models import ContactPhone, EstablishmentEmployee from gallery.models import Image from location.models import Address @@ -14,7 +13,7 @@ from location.serializers import AddressDetailSerializer, TranslatedField from main.models import Currency from main.serializers import AwardSerializer from utils.decorators import with_base_attributes -from utils.serializers import TimeZoneChoiceField, ImageBaseSerializer +from utils.serializers import ImageBaseSerializer, TimeZoneChoiceField def phones_handler(phones_list, establishment): diff --git a/apps/establishment/urls/back.py b/apps/establishment/urls/back.py index 013ada1c..00d44fc2 100644 --- a/apps/establishment/urls/back.py +++ b/apps/establishment/urls/back.py @@ -57,4 +57,6 @@ urlpatterns = [ path('subtypes/', views.EstablishmentSubtypeListCreateView.as_view(), name='subtype-list'), path('subtypes//', views.EstablishmentSubtypeRUDView.as_view(), name='subtype-rud'), path('positions/', views.EstablishmentPositionListView.as_view(), name='position-list'), + path('employee_establishments//', views.EmployeeEstablishmentsListView.as_view(), + name='employee-establishments-list') ] diff --git a/apps/establishment/views/back.py b/apps/establishment/views/back.py index 4449599b..4bbf9533 100644 --- a/apps/establishment/views/back.py +++ b/apps/establishment/views/back.py @@ -1,4 +1,6 @@ """Establishment app views.""" +from django.core.exceptions import ObjectDoesNotExist +from django.http import Http404 from django.shortcuts import get_object_or_404 from django_filters.rest_framework import DjangoFilterBackend from rest_framework import generics, permissions @@ -7,7 +9,7 @@ from account.models import User from establishment import filters, models, serializers from establishment.models import EstablishmentEmployee from timetable.models import Timetable -from timetable.serialziers import ScheduleRUDSerializer, ScheduleCreateSerializer +from timetable.serialziers import ScheduleCreateSerializer, ScheduleRUDSerializer from utils.permissions import IsCountryAdmin, IsEstablishmentManager, IsWineryReviewer from utils.views import CreateDestroyGalleryViewMixin @@ -30,6 +32,19 @@ class EstablishmentListCreateView(EstablishmentMixinViews, generics.ListCreateAP serializer_class = serializers.EstablishmentListCreateSerializer +class EmployeeEstablishmentsListView(generics.ListAPIView): + """Establishment by employee list view.""" + + permission_classes = [IsWineryReviewer | IsCountryAdmin | IsEstablishmentManager] + queryset = models.Establishment.objects.all() + serializer_class = serializers.EstablishmentListCreateSerializer + + def get_queryset(self): + pk = self.kwargs.get('pk') + employee = get_object_or_404(models.Employee, pk=pk) + return employee.establishments.with_extended_related() + + class EstablishmentRUDView(generics.RetrieveUpdateDestroyAPIView): lookup_field = 'slug' queryset = models.Establishment.objects.all().prefetch_related(