Reformat method structure
This commit is contained in:
parent
dd49ee7b6c
commit
d2f04d4958
|
|
@ -531,7 +531,6 @@ class EstablishmentAdminListSerializer(UserShortSerializer):
|
||||||
class EstablishmentEmployeeListSerializer(serializers.ModelSerializer):
|
class EstablishmentEmployeeListSerializer(serializers.ModelSerializer):
|
||||||
"""Establishments from employee serializer"""
|
"""Establishments from employee serializer"""
|
||||||
|
|
||||||
restaurant_name = serializers.CharField(read_only=True, source='establishment.name')
|
|
||||||
position = PositionBackSerializer(read_only=True)
|
position = PositionBackSerializer(read_only=True)
|
||||||
state = serializers.CharField(read_only=True, source='status')
|
state = serializers.CharField(read_only=True, source='status')
|
||||||
start = serializers.DateTimeField(read_only=True, source='from_date')
|
start = serializers.DateTimeField(read_only=True, source='from_date')
|
||||||
|
|
@ -540,7 +539,6 @@ class EstablishmentEmployeeListSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.EstablishmentEmployee
|
model = models.EstablishmentEmployee
|
||||||
fields = [
|
fields = [
|
||||||
'restaurant_name',
|
|
||||||
'position',
|
'position',
|
||||||
'state',
|
'state',
|
||||||
'start',
|
'start',
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
"""Establishment app views."""
|
"""Establishment app views."""
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
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
|
||||||
|
|
@ -39,10 +41,27 @@ class EmployeeEstablishmentsListView(generics.ListAPIView):
|
||||||
queryset = models.EstablishmentEmployee.objects.all()
|
queryset = models.EstablishmentEmployee.objects.all()
|
||||||
serializer_class = serializers.EstablishmentEmployeeListSerializer
|
serializer_class = serializers.EstablishmentEmployeeListSerializer
|
||||||
|
|
||||||
def get_queryset(self):
|
def list(self, request, *args, **kwargs):
|
||||||
pk = self.kwargs.get('pk')
|
pk = self.kwargs.get('pk')
|
||||||
employee = get_object_or_404(models.Employee, pk=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):
|
class EmployeePositionsListView(generics.ListAPIView):
|
||||||
|
|
@ -59,10 +78,6 @@ class EmployeePositionsListView(generics.ListAPIView):
|
||||||
queryset = employee.establishments.with_extended_related()
|
queryset = employee.establishments.with_extended_related()
|
||||||
queryset = self.filter_queryset(queryset)
|
queryset = self.filter_queryset(queryset)
|
||||||
|
|
||||||
data = PositionBackSerializer(
|
|
||||||
employee.establishmentemployee_set.all().values_list('position', flat=True), many=True
|
|
||||||
).data
|
|
||||||
|
|
||||||
page = self.paginate_queryset(queryset)
|
page = self.paginate_queryset(queryset)
|
||||||
if page is not None:
|
if page is not None:
|
||||||
serializer = self.get_serializer(page, many=True)
|
serializer = self.get_serializer(page, many=True)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user