show correct positions for establishment

This commit is contained in:
Kuroshini 2020-02-03 20:57:04 +03:00
parent b1cf952679
commit 94272609bf
2 changed files with 24 additions and 11 deletions

View File

@ -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 = (

View File

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