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:
|
if value not in EMPTY_VALUES:
|
||||||
return queryset.search_by_category(value)
|
return queryset.search_by_category(value)
|
||||||
return queryset
|
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'))
|
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):
|
class Position(BaseAttributes, TranslatedFieldsMixin):
|
||||||
"""Position model."""
|
"""Position model."""
|
||||||
|
|
||||||
|
|
@ -978,6 +987,7 @@ class Position(BaseAttributes, TranslatedFieldsMixin):
|
||||||
on_delete=models.SET_NULL, default=None)
|
on_delete=models.SET_NULL, default=None)
|
||||||
establishment_subtype = models.ForeignKey('EstablishmentSubType', null=True, related_name='available_positions',
|
establishment_subtype = models.ForeignKey('EstablishmentSubType', null=True, related_name='available_positions',
|
||||||
on_delete=models.SET_NULL, default=None)
|
on_delete=models.SET_NULL, default=None)
|
||||||
|
objects = PositionQuerySet.as_manager()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"""Meta class."""
|
"""Meta class."""
|
||||||
|
|
|
||||||
|
|
@ -711,11 +711,15 @@ class EstablishmentPositionListView(generics.ListAPIView):
|
||||||
pagination_class = None
|
pagination_class = None
|
||||||
queryset = models.Position.objects.all()
|
queryset = models.Position.objects.all()
|
||||||
serializer_class = serializers.PositionBackSerializer
|
serializer_class = serializers.PositionBackSerializer
|
||||||
|
filter_class = filters.PositionsByEstablishmentFilter
|
||||||
permission_classes = get_permission_classes(
|
permission_classes = get_permission_classes(
|
||||||
IsEstablishmentManager,
|
IsEstablishmentManager,
|
||||||
IsEstablishmentAdministrator
|
IsEstablishmentAdministrator
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
return super().get_queryset().order_by('priority')
|
||||||
|
|
||||||
|
|
||||||
class EstablishmentAdminView(generics.ListAPIView):
|
class EstablishmentAdminView(generics.ListAPIView):
|
||||||
"""Establishment admin list view."""
|
"""Establishment admin list view."""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user