mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-29 17:39:48 +03:00
Allow to optionally override DjangoModelPermissions.perms_map via view.perms_map.
This commit is contained in:
parent
be5a9f78f3
commit
c1c23ac97b
|
@ -175,7 +175,7 @@ class DjangoModelPermissions(BasePermission):
|
||||||
# Override this if you need to also provide 'view' permissions,
|
# Override this if you need to also provide 'view' permissions,
|
||||||
# or if you want to provide custom permission codes.
|
# or if you want to provide custom permission codes.
|
||||||
perms_map = {
|
perms_map = {
|
||||||
'GET': [],
|
'GET': ['%(app_label)s.view_%(model_name)s'],
|
||||||
'OPTIONS': [],
|
'OPTIONS': [],
|
||||||
'HEAD': [],
|
'HEAD': [],
|
||||||
'POST': ['%(app_label)s.add_%(model_name)s'],
|
'POST': ['%(app_label)s.add_%(model_name)s'],
|
||||||
|
@ -226,8 +226,14 @@ class DjangoModelPermissions(BasePermission):
|
||||||
not request.user.is_authenticated and self.authenticated_users_only):
|
not request.user.is_authenticated and self.authenticated_users_only):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
queryset = self._queryset(view)
|
if hasattr(view, 'perms_map') and request.method in view.perms_map:
|
||||||
perms = self.get_required_permissions(request.method, queryset.model)
|
# Override default perms_map from view / ViewSet.
|
||||||
|
perms = view.perms_map[request.method]
|
||||||
|
if isinstance(perms, str):
|
||||||
|
perms = [perms]
|
||||||
|
else:
|
||||||
|
queryset = self._queryset(view)
|
||||||
|
perms = self.get_required_permissions(request.method, queryset.model)
|
||||||
|
|
||||||
return request.user.has_perms(perms)
|
return request.user.has_perms(perms)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user