Added employee positions method

This commit is contained in:
dormantman 2020-01-22 18:48:16 +03:00
parent c78c6a67b1
commit 8fb8c49bfe
3 changed files with 46 additions and 1 deletions

View File

@ -92,6 +92,19 @@ class EstablishmentListCreateSerializer(model_serializers.EstablishmentBaseSeria
return instance return instance
class EstablishmentPositionListSerializer(model_serializers.EstablishmentBaseSerializer):
"""Establishment position serializer"""
class Meta:
model = models.Establishment
fields = [
'id',
'name',
'transliterated_name',
'index_name',
]
class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer): class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer):
"""Establishment create serializer""" """Establishment create serializer"""

View File

@ -57,6 +57,8 @@ urlpatterns = [
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('positions/', views.EstablishmentPositionListView.as_view(), name='position-list'), path('positions/', views.EstablishmentPositionListView.as_view(), name='position-list'),
path('employee_positions/<int:pk>/', views.EmployeePositionsListView.as_view(),
name='employee-positions-list'),
path('employee_establishments/<int:pk>/', views.EmployeeEstablishmentsListView.as_view(), path('employee_establishments/<int:pk>/', views.EmployeeEstablishmentsListView.as_view(),
name='employee-establishments-list') name='employee-establishments-list'),
] ]

View File

@ -4,10 +4,12 @@ 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, permissions from rest_framework import generics, permissions
from rest_framework.response import Response
from account.models import User from account.models import User
from establishment import filters, models, serializers from establishment import filters, models, serializers
from establishment.models import EstablishmentEmployee from establishment.models import EstablishmentEmployee
from establishment.serializers import PositionBackSerializer
from timetable.models import Timetable from timetable.models import Timetable
from timetable.serialziers import ScheduleCreateSerializer, ScheduleRUDSerializer from timetable.serialziers import ScheduleCreateSerializer, ScheduleRUDSerializer
from utils.permissions import IsCountryAdmin, IsEstablishmentManager, IsWineryReviewer from utils.permissions import IsCountryAdmin, IsEstablishmentManager, IsWineryReviewer
@ -45,6 +47,34 @@ class EmployeeEstablishmentsListView(generics.ListAPIView):
return employee.establishments.with_extended_related() return employee.establishments.with_extended_related()
class EmployeePositionsListView(generics.ListAPIView):
"""Establishment position by employee list view."""
permission_classes = [IsWineryReviewer | IsCountryAdmin | IsEstablishmentManager]
queryset = models.Establishment.objects.all()
serializer_class = serializers.EstablishmentPositionListSerializer
def list(self, request, *args, **kwargs):
pk = self.kwargs.get('pk')
employee = get_object_or_404(models.Employee, pk=pk)
queryset = employee.establishments.with_extended_related()
queryset = self.filter_queryset(queryset)
data = PositionBackSerializer(
employee.establishmentemployee_set.all().values_list('position', flat=True), many=True
).data
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
class EstablishmentRUDView(generics.RetrieveUpdateDestroyAPIView): class EstablishmentRUDView(generics.RetrieveUpdateDestroyAPIView):
lookup_field = 'slug' lookup_field = 'slug'
queryset = models.Establishment.objects.all().prefetch_related( queryset = models.Establishment.objects.all().prefetch_related(