Skip to content

Commit 3ab8f4f

Browse files
author
Davis Muro
committed
Add grant-default-model-level-perms route
1 parent 37107aa commit 3ab8f4f

File tree

2 files changed

+30
-15
lines changed

2 files changed

+30
-15
lines changed

Diff for: kpi/urls/__init__.py

+11-14
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,23 @@
11
# coding: utf-8
22
import private_storage.urls
33
from django.conf import settings
4-
from django.urls import include, re_path, path
4+
from django.urls import include, path, re_path
55
from django.views.i18n import JavaScriptCatalog
66

77
from hub.models import ConfigurationFile
88
from hub.views import ExtraDetailRegistrationView
9-
from kobo.apps.superuser_stats.views import (
10-
user_report,
11-
country_report,
12-
retrieve_reports,
13-
)
9+
from kobo.apps.mfa.views import MfaLoginView, MfaTokenView
10+
from kobo.apps.superuser_stats.views import (country_report, retrieve_reports,
11+
user_report)
1412
from kpi.forms.registration import RegistrationForm
15-
from kpi.views import authorized_application_authenticate_user
16-
from kpi.views import home, one_time_login, browser_tests, design_system, modern_browsers
17-
from kpi.views.environment import EnvironmentView
13+
from kpi.views import (authorized_application_authenticate_user, browser_tests,
14+
design_system, home, modern_browsers, one_time_login)
1815
from kpi.views.current_user import CurrentUserViewSet
19-
from kobo.apps.mfa.views import (
20-
MfaLoginView,
21-
MfaTokenView,
22-
)
16+
from kpi.views.environment import EnvironmentView
2317
from kpi.views.token import TokenView
2418

2519
from .router_api_v1 import router_api_v1
26-
from .router_api_v2 import router_api_v2, URL_NAMESPACE
20+
from .router_api_v2 import URL_NAMESPACE, router_api_v2
2721

2822
# TODO: Give other apps their own `urls.py` files instead of importing their
2923
# views directly! See
@@ -37,6 +31,9 @@
3731
'get': 'retrieve',
3832
'patch': 'partial_update',
3933
}), name='currentuser-detail'),
34+
path('grant-default-model-level-perms', CurrentUserViewSet.as_view({
35+
'post': 'grant_default_model_level_perms',
36+
}), name='currentuser-default-perms')
4037
re_path(r'^', include(router_api_v1.urls)),
4138
re_path(r'^api/v2/', include((router_api_v2.urls, URL_NAMESPACE))),
4239
re_path(r'^api/v2/auth/', include('kobo.apps.mfa.urls')),

Diff for: kpi/views/current_user.py

+19-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
# coding: utf-8
22
from django.contrib.auth.models import User
3-
from rest_framework import viewsets
3+
from rest_framework import renderers, status, viewsets
4+
from rest_framework.decorators import detail_route
5+
from rest_framework.response import Response
46

57
from kpi.serializers import CurrentUserSerializer
8+
from kpi.utils.permissions import grant_default_model_level_perms
69

710

811
class CurrentUserViewSet(viewsets.ModelViewSet):
@@ -11,3 +14,18 @@ class CurrentUserViewSet(viewsets.ModelViewSet):
1114

1215
def get_object(self):
1316
return self.request.user
17+
18+
@detail_route(methods=["POST"], renderer_classes=[renderers.JSONRenderer])
19+
def grant_default_model_level_perms(self, request, *args, **kwargs):
20+
user = self.get_object()
21+
grant_default_model_level_perms(user)
22+
23+
return Response(
24+
data={
25+
"detail": (
26+
"Successfully granted default model level "
27+
f"perms to user {user.username}"
28+
)
29+
},
30+
status=status.HTTP_200_OK
31+
)

0 commit comments

Comments
 (0)