From b989762568855f4938504c676a0d38e875ccfa7c Mon Sep 17 00:00:00 2001 From: Anatoly Date: Wed, 22 Jan 2020 14:50:00 +0300 Subject: [PATCH] added endpoint to get role types, change endpoint URI ( from /account/role-tab/ to /account/role/tab/) --- apps/account/models.py | 10 ++++++++-- apps/account/urls/back.py | 3 ++- apps/account/views/back.py | 9 ++++++++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/apps/account/models.py b/apps/account/models.py index ab7e143c..acb56089 100644 --- a/apps/account/models.py +++ b/apps/account/models.py @@ -86,8 +86,14 @@ class Role(ProjectBaseMixin): @classmethod def role_names(cls): - return [role_name._proxy____args[0] - for role_name in dict(cls.ROLE_CHOICES).values()] + return [role_name for role_name in dict(cls.ROLE_CHOICES).values()] + + @classmethod + def role_types(cls): + roles = [] + for role_id, role in dict(cls.ROLE_CHOICES).items(): + roles.append({'id': role_id, 'name': role}) + return roles @classmethod def role_condition_expressions(cls) -> list: diff --git a/apps/account/urls/back.py b/apps/account/urls/back.py index 3635c1a6..db7cb772 100644 --- a/apps/account/urls/back.py +++ b/apps/account/urls/back.py @@ -7,7 +7,8 @@ app_name = 'account' urlpatterns = [ path('role/', views.RoleListView.as_view(), name='role-list-create'), - path('role-tab/', views.RoleTabRetrieveView.as_view(), name='role-tab'), + path('role/types/', views.RoleChoiceListView.as_view(), name='role-type-list'), + path('role/tab/', views.RoleTabRetrieveView.as_view(), name='role-tab'), path('user-role/', views.UserRoleListView.as_view(), name='user-role-list-create'), path('user/', views.UserListView.as_view(), name='user-create-list'), path('user//', views.UserRUDView.as_view(), name='user-rud'), diff --git a/apps/account/views/back.py b/apps/account/views/back.py index a8b5a1f7..73937bb8 100644 --- a/apps/account/views/back.py +++ b/apps/account/views/back.py @@ -18,6 +18,13 @@ class RoleListView(generics.ListCreateAPIView): filter_class = filters.RoleListFilter +class RoleChoiceListView(generics.GenericAPIView): + """Return role choices.""" + def get(self, request, *args, **kwargs): + """Implement GET-method""" + return Response(models.Role.role_types(), status=status.HTTP_200_OK) + + class RoleTabRetrieveView(generics.GenericAPIView): permission_classes = [permissions.IsAdminUser] @@ -54,7 +61,7 @@ class UserRoleListView(generics.ListCreateAPIView): class UserListView(generics.ListCreateAPIView): """User list create view.""" - queryset = User.objects.prefetch_related('roles') + queryset = User.objects.prefetch_related('roles', 'subscriber') serializer_class = serializers.BackUserSerializer permission_classes = (permissions.IsAdminUser,) filter_class = filters.AccountBackOfficeFilter