positions by establishment type/subtype list
This commit is contained in:
parent
122680af0b
commit
b1cf952679
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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."""
|
||||
|
|
|
|||
|
|
@ -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."""
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user