diff --git a/apps/account/models.py b/apps/account/models.py index b4744bd6..b48a419c 100644 --- a/apps/account/models.py +++ b/apps/account/models.py @@ -95,11 +95,15 @@ class UserQuerySet(models.QuerySet): def by_role(self, role): """Filter by role.""" - return self.filter(userrole__role=role).dictinct() + return self.filter(userrole__role=role) def by_roles(self, roles: list): """Filter by roles.""" - return self.filter(userrole__role__in=roles).dictinct() + return self.filter(userrole__role__in=roles) + + def establishment_admin(self, establishment): + role = Role.objects.filter(role=Role.ESTABLISHMENT_MANAGER).first() + return self.by_role(role).filter(userrole__establishment=establishment) class User(AbstractUser): diff --git a/apps/account/serializers/back.py b/apps/account/serializers/back.py index 1ee6a8b1..01889411 100644 --- a/apps/account/serializers/back.py +++ b/apps/account/serializers/back.py @@ -70,7 +70,3 @@ class UserRoleSerializer(serializers.ModelSerializer): 'user', 'establishment' ] - - -class OwnerSerializer(BackUserSerializer): - """Owner serializer.""" diff --git a/apps/account/urls/back.py b/apps/account/urls/back.py index 5c87e525..30f21573 100644 --- a/apps/account/urls/back.py +++ b/apps/account/urls/back.py @@ -10,5 +10,4 @@ urlpatterns = [ path('user-role/', views.UserRoleLstView.as_view(), name='user-role-list-create'), path('user/', views.UserLstView.as_view(), name='user-create-list'), path('user//', views.UserRUDView.as_view(), name='user-rud'), - path('owner/', views.OwnerListView.as_view(), name='owner-list'), ] diff --git a/apps/account/views/back.py b/apps/account/views/back.py index 08d3713d..fbbc986e 100644 --- a/apps/account/views/back.py +++ b/apps/account/views/back.py @@ -46,9 +46,3 @@ class UserRUDView(generics.RetrieveUpdateDestroyAPIView): serializer_class = serializers.BackDetailUserSerializer permission_classes = (permissions.IsAdminUser,) lookup_field = 'id' - - -class OwnerListView(generics.ListAPIView): - serializer_class = serializers.OwnerSerializer - queryset = models.User.objects.active() - permission_classes = (permissions.IsAuthenticatedOrReadOnly, ) diff --git a/apps/establishment/serializers/back.py b/apps/establishment/serializers/back.py index a1b6cc4a..b7d429da 100644 --- a/apps/establishment/serializers/back.py +++ b/apps/establishment/serializers/back.py @@ -324,3 +324,14 @@ class EstablishmentNoteListCreateSerializer(EstablishmentNoteBaseSerializer): """Return establishment instance from view.""" if self.serializer_view: return self.serializer_view.get_object() + + +class EstablishmentAdminListSerializer(UserShortSerializer): + """Establishment admin serializer.""" + class Meta: + model = UserShortSerializer.Meta.model + fields = [ + 'id', + 'username', + 'email' + ] diff --git a/apps/establishment/urls/back.py b/apps/establishment/urls/back.py index ce1c7b27..b2a30917 100644 --- a/apps/establishment/urls/back.py +++ b/apps/establishment/urls/back.py @@ -28,6 +28,8 @@ urlpatterns = [ name='note-list-create'), path('slug//notes//', views.EstablishmentNoteRUDView.as_view(), name='note-rud'), + path('slug//admin/', views.EstablishmentAdminView.as_view(), + name='establishment-admin-list'), path('menus/', views.MenuListCreateView.as_view(), name='menu-list'), path('menus//', views.MenuRUDView.as_view(), name='menu-rud'), path('plates/', views.PlateListCreateView.as_view(), name='plates'), diff --git a/apps/establishment/views/back.py b/apps/establishment/views/back.py index 6e2c953a..91d40422 100644 --- a/apps/establishment/views/back.py +++ b/apps/establishment/views/back.py @@ -1,15 +1,15 @@ """Establishment app views.""" from django.http import Http404, HttpResponse from django.shortcuts import get_object_or_404 -from rest_framework import generics, permissions, status +from rest_framework import generics, permissions +from rest_framework import status +from account.models import User from establishment import filters, models, serializers +from timetable.models import Timetable from timetable.serialziers import ScheduleRUDSerializer, ScheduleCreateSerializer from utils.permissions import IsCountryAdmin, IsEstablishmentManager, IsWineryReviewer from utils.views import CreateDestroyGalleryViewMixin -from timetable.models import Timetable -from rest_framework import status -from rest_framework.response import Response class EstablishmentMixinViews: @@ -374,3 +374,14 @@ class EstablishmentPositionListView(generics.ListAPIView): permission_classes = (permissions.AllowAny, ) queryset = models.Position.objects.all() serializer_class = serializers.PositionBackSerializer + + +class EstablishmentAdminView(generics.ListAPIView): + """Establishment admin list view.""" + serializer_class = serializers.EstablishmentAdminListSerializer + permission_classes = (permissions.IsAuthenticatedOrReadOnly, ) + + def get_queryset(self): + establishment = get_object_or_404( + models.Establishment, slug=self.kwargs['slug']) + return User.objects.establishment_admin(establishment).distinct()