From 94272609bf387784cf170706e04d863f191f44cc Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Mon, 3 Feb 2020 20:57:04 +0300 Subject: [PATCH] show correct positions for establishment --- apps/establishment/serializers/back.py | 31 +++++++++++++++++--------- apps/establishment/views/back.py | 4 ++++ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/apps/establishment/serializers/back.py b/apps/establishment/serializers/back.py index fa06d30a..84f421d3 100644 --- a/apps/establishment/serializers/back.py +++ b/apps/establishment/serializers/back.py @@ -421,22 +421,30 @@ class EstEmployeeBackSerializer(EmployeeBackSerializers): def get_positions(self, obj): establishment_id = self.request_kwargs.get('establishment_id') + establishment = self.context['view'].kwargs['establishment_instance'] + establishment_type = self.context['view'].kwargs['establishment_instance_type'] + establishment_subtypes = self.context['view'].kwargs['establishment_instance_subtypes'] es_emp = EstablishmentEmployee.objects.filter( employee=obj, establishment_id=establishment_id, - ).distinct().order_by('position_id') + ).distinct().order_by('position_id').prefetch_related('position', 'position__establishment_type', + 'position__establishment_subtype') result = [] for item in es_emp: - result.append({ - 'id': item.id, - 'from_date': item.from_date, - 'to_date': item.to_date, - 'status': item.status, - 'position_id': item.position_id, - 'position_priority': item.position.priority, - 'position_index_name': item.position.index_name, - 'position_name_translated': item.position.name_translated, - }) + if item.position.establishment_type == establishment_type or \ + item.position.establishment_subtype in establishment_subtypes or \ + (item.position.establishment_subtype is None and item.position.establishment_type is None): + # show only relevant for current establishment positions + result.append({ + 'id': item.id, + 'from_date': item.from_date, + 'to_date': item.to_date, + 'status': item.status, + 'position_id': item.position_id, + 'position_priority': item.position.priority, + 'position_index_name': item.position.index_name, + 'position_name_translated': item.position.name_translated, + }) return result @@ -812,6 +820,7 @@ class EstablishmentBackOfficeWineSerializer(serializers.ModelSerializer): write_only=True ) """BackOffice wine serializer""" + class Meta: model = models.EstablishmentBackOfficeWine fields = ( diff --git a/apps/establishment/views/back.py b/apps/establishment/views/back.py index a789e8cb..1682adfe 100644 --- a/apps/establishment/views/back.py +++ b/apps/establishment/views/back.py @@ -482,6 +482,10 @@ class EstablishmentEmployeeListView(generics.ListCreateAPIView): def get_queryset(self): establishment_id = self.kwargs['establishment_id'] + establishment = get_object_or_404(models.Establishment, pk=establishment_id) + self.kwargs['establishment_instance'] = establishment + self.kwargs['establishment_instance_subtypes'] = list(establishment.establishment_subtypes.all()) + self.kwargs['establishment_instance_type'] = establishment.establishment_type return models.Employee.objects.filter( establishmentemployee__establishment_id=establishment_id, ).distinct()