Reformat method structure

This commit is contained in:
dormantman 2020-01-25 00:42:00 +03:00
parent dd49ee7b6c
commit d2f04d4958
2 changed files with 21 additions and 8 deletions

View File

@ -531,7 +531,6 @@ class EstablishmentAdminListSerializer(UserShortSerializer):
class EstablishmentEmployeeListSerializer(serializers.ModelSerializer):
"""Establishments from employee serializer"""
restaurant_name = serializers.CharField(read_only=True, source='establishment.name')
position = PositionBackSerializer(read_only=True)
state = serializers.CharField(read_only=True, source='status')
start = serializers.DateTimeField(read_only=True, source='from_date')
@ -540,7 +539,6 @@ class EstablishmentEmployeeListSerializer(serializers.ModelSerializer):
class Meta:
model = models.EstablishmentEmployee
fields = [
'restaurant_name',
'position',
'state',
'start',

View File

@ -1,4 +1,6 @@
"""Establishment app views."""
from collections import defaultdict
from django.shortcuts import get_object_or_404
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import generics, permissions
@ -39,10 +41,27 @@ class EmployeeEstablishmentsListView(generics.ListAPIView):
queryset = models.EstablishmentEmployee.objects.all()
serializer_class = serializers.EstablishmentEmployeeListSerializer
def get_queryset(self):
def list(self, request, *args, **kwargs):
pk = self.kwargs.get('pk')
employee = get_object_or_404(models.Employee, pk=pk)
return employee.establishmentemployee_set.all()
preload_data = defaultdict(list)
for establishment_employee in employee.establishmentemployee_set.all() \
.prefetch_related('establishment').select_related('position'):
establishment_name = establishment_employee.establishment.name
preload_data[establishment_name].append(
serializers.EstablishmentEmployeeListSerializer(establishment_employee).data
)
data = [{
'restaurant_name': establishment_name,
'positions': [
preload_data[establishment_name]
]
} for establishment_name in preload_data]
return Response(data)
class EmployeePositionsListView(generics.ListAPIView):
@ -59,10 +78,6 @@ class EmployeePositionsListView(generics.ListAPIView):
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)