Refactor (structure)
This commit is contained in:
parent
415c9b7851
commit
d51d304077
|
|
@ -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',
|
||||||
|
|
|
||||||
|
|
@ -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):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user