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 main.serializers import AwardSerializer
from timetable.serialziers import ScheduleRUDSerializer from timetable.serialziers import ScheduleRUDSerializer
from utils.decorators import with_base_attributes 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): 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""" """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,6 +541,7 @@ class EstablishmentEmployeeListSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = models.EstablishmentEmployee model = models.EstablishmentEmployee
fields = [ fields = [
'restaurant_name',
'position', 'position',
'state', 'state',
'start', 'start',

View File

@ -38,27 +38,16 @@ class EmployeeEstablishmentPositionsView(generics.GenericAPIView):
permission_classes = [IsWineryReviewer | IsCountryAdmin | IsEstablishmentManager] permission_classes = [IsWineryReviewer | IsCountryAdmin | IsEstablishmentManager]
queryset = models.EstablishmentEmployee.objects.all() queryset = models.EstablishmentEmployee.objects.all()
serializer_class = serializers.EstablishmentEmployeeListSerializer serializer_class = serializers.EstablishmentEmployeePositionsSerializer
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
employee_pk = self.kwargs.get('pk') employee_pk = self.kwargs.get('pk')
preload_data = defaultdict(list) return Response(self.get_serializer(
for establishment_employee in self.get_queryset().filter(employee__id=employee_pk).all() \ self.get_queryset().filter(employee__id=employee_pk).all()
.prefetch_related('establishment').select_related('position'): .prefetch_related('establishment').select_related('position'),
establishment_name = establishment_employee.establishment.name many=True
preload_data[establishment_name].append( ).data)
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 EmployeeEstablishmentsListView(generics.ListAPIView): class EmployeeEstablishmentsListView(generics.ListAPIView):