diff --git a/apps/establishment/serializers/back.py b/apps/establishment/serializers/back.py index 6eb4b40d..c9b2f2fe 100644 --- a/apps/establishment/serializers/back.py +++ b/apps/establishment/serializers/back.py @@ -14,7 +14,7 @@ from main.models import Currency from main.serializers import AwardSerializer from timetable.serialziers import ScheduleRUDSerializer from utils.decorators import with_base_attributes -from utils.serializers import ImageBaseSerializer, TimeZoneChoiceField, ProjectModelSerializer +from utils.serializers import ImageBaseSerializer, ProjectModelSerializer, TimeZoneChoiceField def phones_handler(phones_list, establishment): @@ -529,9 +529,10 @@ class EstablishmentAdminListSerializer(UserShortSerializer): ] -class EstablishmentEmployeeListSerializer(serializers.ModelSerializer): +class EstablishmentEmployeePositionsSerializer(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,6 +541,7 @@ class EstablishmentEmployeeListSerializer(serializers.ModelSerializer): class Meta: model = models.EstablishmentEmployee fields = [ + 'restaurant_name', 'position', 'state', 'start', diff --git a/apps/establishment/views/back.py b/apps/establishment/views/back.py index 5d8f7dd5..abe89404 100644 --- a/apps/establishment/views/back.py +++ b/apps/establishment/views/back.py @@ -38,27 +38,16 @@ class EmployeeEstablishmentPositionsView(generics.GenericAPIView): permission_classes = [IsWineryReviewer | IsCountryAdmin | IsEstablishmentManager] queryset = models.EstablishmentEmployee.objects.all() - serializer_class = serializers.EstablishmentEmployeeListSerializer + serializer_class = serializers.EstablishmentEmployeePositionsSerializer def get(self, request, *args, **kwargs): employee_pk = self.kwargs.get('pk') - preload_data = defaultdict(list) - for establishment_employee in self.get_queryset().filter(employee__id=employee_pk).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) + return Response(self.get_serializer( + self.get_queryset().filter(employee__id=employee_pk).all() + .prefetch_related('establishment').select_related('position'), + many=True + ).data) class EmployeeEstablishmentsListView(generics.ListAPIView):