positions by establishment type/subtype list

This commit is contained in:
Kuroshini 2020-02-03 20:00:17 +03:00
parent 122680af0b
commit b1cf952679
3 changed files with 40 additions and 0 deletions

View File

@ -149,3 +149,29 @@ class MenuDishesBackFilter(filters.FilterSet):
if value not in EMPTY_VALUES:
return queryset.search_by_category(value)
return queryset
class PositionsByEstablishmentFilter(filters.FilterSet):
"""Positions by establishment type/subtype"""
subtype = filters.CharFilter(method='by_subtype')
type = filters.CharFilter(method='by_type')
class Meta:
model = models.Position
fields = (
'subtype',
'type',
)
def by_type(self, queryset, name, value):
"""filter by establishment type"""
if value not in EMPTY_VALUES:
return queryset.by_establishment_type(value)
return queryset
def by_subtype(self, queryset, name, value):
"""filter by establishment subtype"""
if value not in EMPTY_VALUES:
return queryset.by_establishment_subtype(value)
return queryset

View File

@ -961,6 +961,15 @@ class EstablishmentGallery(IntermediateGalleryModelMixin):
unique_together = (('establishment', 'is_main'), ('establishment', 'image'))
class PositionQuerySet(models.QuerySet):
def by_establishment_type(self, value: str):
return self.filter(establishment_type__index_name=value)
def by_establishment_subtype(self, value: str):
return self.filter(establishment_subtype__index_name=value)
class Position(BaseAttributes, TranslatedFieldsMixin):
"""Position model."""
@ -978,6 +987,7 @@ class Position(BaseAttributes, TranslatedFieldsMixin):
on_delete=models.SET_NULL, default=None)
establishment_subtype = models.ForeignKey('EstablishmentSubType', null=True, related_name='available_positions',
on_delete=models.SET_NULL, default=None)
objects = PositionQuerySet.as_manager()
class Meta:
"""Meta class."""

View File

@ -711,11 +711,15 @@ class EstablishmentPositionListView(generics.ListAPIView):
pagination_class = None
queryset = models.Position.objects.all()
serializer_class = serializers.PositionBackSerializer
filter_class = filters.PositionsByEstablishmentFilter
permission_classes = get_permission_classes(
IsEstablishmentManager,
IsEstablishmentAdministrator
)
def get_queryset(self):
return super().get_queryset().order_by('priority')
class EstablishmentAdminView(generics.ListAPIView):
"""Establishment admin list view."""