add api for establishment admin

This commit is contained in:
Dmitriy Kuzmenko 2019-12-13 11:02:37 +03:00
parent 86b2e708f0
commit bd6f8a47a1
7 changed files with 34 additions and 17 deletions

View File

@ -95,11 +95,15 @@ class UserQuerySet(models.QuerySet):
def by_role(self, role): def by_role(self, role):
"""Filter by role.""" """Filter by role."""
return self.filter(userrole__role=role).dictinct() return self.filter(userrole__role=role)
def by_roles(self, roles: list): def by_roles(self, roles: list):
"""Filter by roles.""" """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): class User(AbstractUser):

View File

@ -70,7 +70,3 @@ class UserRoleSerializer(serializers.ModelSerializer):
'user', 'user',
'establishment' 'establishment'
] ]
class OwnerSerializer(BackUserSerializer):
"""Owner serializer."""

View File

@ -10,5 +10,4 @@ urlpatterns = [
path('user-role/', views.UserRoleLstView.as_view(), name='user-role-list-create'), 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.UserLstView.as_view(), name='user-create-list'),
path('user/<int:id>/', views.UserRUDView.as_view(), name='user-rud'), path('user/<int:id>/', views.UserRUDView.as_view(), name='user-rud'),
path('owner/', views.OwnerListView.as_view(), name='owner-list'),
] ]

View File

@ -46,9 +46,3 @@ class UserRUDView(generics.RetrieveUpdateDestroyAPIView):
serializer_class = serializers.BackDetailUserSerializer serializer_class = serializers.BackDetailUserSerializer
permission_classes = (permissions.IsAdminUser,) permission_classes = (permissions.IsAdminUser,)
lookup_field = 'id' lookup_field = 'id'
class OwnerListView(generics.ListAPIView):
serializer_class = serializers.OwnerSerializer
queryset = models.User.objects.active()
permission_classes = (permissions.IsAuthenticatedOrReadOnly, )

View File

@ -324,3 +324,14 @@ class EstablishmentNoteListCreateSerializer(EstablishmentNoteBaseSerializer):
"""Return establishment instance from view.""" """Return establishment instance from view."""
if self.serializer_view: if self.serializer_view:
return self.serializer_view.get_object() return self.serializer_view.get_object()
class EstablishmentAdminListSerializer(UserShortSerializer):
"""Establishment admin serializer."""
class Meta:
model = UserShortSerializer.Meta.model
fields = [
'id',
'username',
'email'
]

View File

@ -28,6 +28,8 @@ urlpatterns = [
name='note-list-create'), name='note-list-create'),
path('slug/<slug:slug>/notes/<int:note_pk>/', views.EstablishmentNoteRUDView.as_view(), path('slug/<slug:slug>/notes/<int:note_pk>/', views.EstablishmentNoteRUDView.as_view(),
name='note-rud'), name='note-rud'),
path('slug/<slug:slug>/admin/', views.EstablishmentAdminView.as_view(),
name='establishment-admin-list'),
path('menus/', views.MenuListCreateView.as_view(), name='menu-list'), path('menus/', views.MenuListCreateView.as_view(), name='menu-list'),
path('menus/<int:pk>/', views.MenuRUDView.as_view(), name='menu-rud'), path('menus/<int:pk>/', views.MenuRUDView.as_view(), name='menu-rud'),
path('plates/', views.PlateListCreateView.as_view(), name='plates'), path('plates/', views.PlateListCreateView.as_view(), name='plates'),

View File

@ -1,15 +1,15 @@
"""Establishment app views.""" """Establishment app views."""
from django.http import Http404, HttpResponse from django.http import Http404, HttpResponse
from django.shortcuts import get_object_or_404 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 establishment import filters, models, serializers
from timetable.models import Timetable
from timetable.serialziers import ScheduleRUDSerializer, ScheduleCreateSerializer from timetable.serialziers import ScheduleRUDSerializer, ScheduleCreateSerializer
from utils.permissions import IsCountryAdmin, IsEstablishmentManager, IsWineryReviewer from utils.permissions import IsCountryAdmin, IsEstablishmentManager, IsWineryReviewer
from utils.views import CreateDestroyGalleryViewMixin from utils.views import CreateDestroyGalleryViewMixin
from timetable.models import Timetable
from rest_framework import status
from rest_framework.response import Response
class EstablishmentMixinViews: class EstablishmentMixinViews:
@ -374,3 +374,14 @@ class EstablishmentPositionListView(generics.ListAPIView):
permission_classes = (permissions.AllowAny, ) permission_classes = (permissions.AllowAny, )
queryset = models.Position.objects.all() queryset = models.Position.objects.all()
serializer_class = serializers.PositionBackSerializer 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()