Skip to content

Commit

Permalink
Add Users is_municipal filter
Browse files Browse the repository at this point in the history
  • Loading branch information
TheSuncatcher222 committed Nov 25, 2023
1 parent aadd2ab commit a7b7f11
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 9 deletions.
44 changes: 35 additions & 9 deletions backend/api/v1/schemas_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from rest_framework_simplejwt.serializers import (
TokenObtainPairSerializer, TokenRefreshSerializer,
)
from drf_spectacular.utils import inline_serializer, extend_schema
from drf_spectacular.utils import inline_serializer, extend_schema, OpenApiParameter

from user.validators import (
PASS_ERROR, USER_FIRST_NAME_ERROR, USER_LAST_NAME_ERROR,
Expand All @@ -15,6 +15,7 @@

DEFAULT_400_REQUIRED: str = 'Обязательное поле.'
DEFAULT_401: str = 'Учетные данные не были предоставлены.'
DEFAULT_403: str = 'У вас недостаточно прав для выполнения данного действия.'
DEFAULT_404: str = 'Страница не найдена.'

APPEAL_SCHEMA = {
Expand Down Expand Up @@ -96,21 +97,21 @@
),
},
),
status.HTTP_400_BAD_REQUEST: inline_serializer(
name='appeals_post_answer_error_403',
status.HTTP_401_UNAUTHORIZED: inline_serializer(
name='appeals_post_answer_error_400',
fields={
'detail': serializers.CharField(
default=(
'Вы уже дали официальный ответ обращению.'
),
default=DEFAULT_401,
),
},
),
status.HTTP_401_UNAUTHORIZED: inline_serializer(
name='appeals_post_answer_error_400',
status.HTTP_403_FORBIDDEN: inline_serializer(
name='appeals_post_answer_error_403',
fields={
'detail': serializers.CharField(
default=DEFAULT_401,
default=(
'Вы уже дали официальный ответ обращению.'
),
),
},
),
Expand Down Expand Up @@ -274,6 +275,15 @@
'list': extend_schema(
description='Возвращает список пользователей.',
summary='Получить список пользователей.',
parameters=[
OpenApiParameter(
name='is_municipal',
location=OpenApiParameter.QUERY,
description='Статус муниципального учреждения.',
required=False,
type=bool,
),
],
responses={
status.HTTP_200_OK: UserFullSerializer,
status.HTTP_401_UNAUTHORIZED: inline_serializer(
Expand All @@ -284,6 +294,14 @@
),
},
),
status.HTTP_403_FORBIDDEN: inline_serializer(
name='users_retrieve_error_403',
fields={
'detail': serializers.CharField(
default=DEFAULT_403,
),
},
),
},
),
'retrieve': extend_schema(
Expand All @@ -299,6 +317,14 @@
),
},
),
status.HTTP_403_FORBIDDEN: inline_serializer(
name='users_retrieve_error_403',
fields={
'detail': serializers.CharField(
default=DEFAULT_403,
),
},
),
status.HTTP_404_NOT_FOUND: inline_serializer(
name='user_retrieve_error_404',
fields={
Expand Down
16 changes: 16 additions & 0 deletions backend/api/v1/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,3 +171,19 @@ def get_permissions(self):
if self.request.method == 'GET':
self.permission_classes = [IsAdminUser,]
return super().get_permissions()

def get_queryset(self):
is_municipal: str = self.request.query_params.get('is_municipal')
if is_municipal == 'true':
return User.objects.select_related(
'address',
).filter(
is_staff=False,
is_municipal=True,
)
return User.objects.select_related(
'address',
).filter(
is_staff=False,
is_municipal=False,
)

0 comments on commit a7b7f11

Please sign in to comment.