Refactor (structure)

This commit is contained in:
dormantman 2020-01-27 21:45:06 +03:00
parent 415c9b7851
commit d51d304077
2 changed files with 10 additions and 19 deletions

View File

@ -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',

View File

@ -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):