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
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):
"""Establishment create serializer"""

View File

@ -57,6 +57,8 @@ urlpatterns = [
path('subtypes/', views.EstablishmentSubtypeListCreateView.as_view(), name='subtype-list'),
path('subtypes/<int:pk>/', views.EstablishmentSubtypeRUDView.as_view(), name='subtype-rud'),
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(),
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_filters.rest_framework import DjangoFilterBackend
from rest_framework import generics, permissions
from rest_framework.response import Response
from account.models import User
from establishment import filters, models, serializers
from establishment.models import EstablishmentEmployee
from establishment.serializers import PositionBackSerializer
from timetable.models import Timetable
from timetable.serialziers import ScheduleCreateSerializer, ScheduleRUDSerializer
from utils.permissions import IsCountryAdmin, IsEstablishmentManager, IsWineryReviewer
@ -45,6 +47,34 @@ class EmployeeEstablishmentsListView(generics.ListAPIView):
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):
lookup_field = 'slug'
queryset = models.Establishment.objects.all().prefetch_related(