Skip to content

Commit 96080c9

Browse files
committed
Refactor BaseDjangoModelPermission: short circuit permission evaluation for unsupported request methods
1 parent 4e2b322 commit 96080c9

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

dojo/api_v2/permissions.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,10 @@ class BaseDjangoModelPermission(permissions.BasePermission):
106106
}
107107

108108
def _evaluate_permissions(self, request: Request, permissions: dict[str, str]) -> bool:
109+
# Short circuit if the request method is not in the expected methods
110+
if request.method not in permissions:
111+
return True
112+
# Evaluate the permissions as usual
109113
for method, permission in permissions.items():
110114
if request.method == method:
111115
return user_has_configuration_permission(
@@ -117,9 +121,6 @@ def _evaluate_permissions(self, request: Request, permissions: dict[str, str]) -
117121
def has_permission(self, request: Request, view):
118122
# First restrict the mapping got GET/POST only
119123
expected_request_method_permission_map = {k: v for k, v in self.request_method_permission_map.items() if k in {"GET", "POST"}}
120-
# Short circuit if the request method is not in the expected methods
121-
if request.method not in expected_request_method_permission_map:
122-
return True
123124
# Evaluate the permissions
124125
return self._evaluate_permissions(request, expected_request_method_permission_map)
125126

0 commit comments

Comments
 (0)