diff --git a/rest_framework/permissions.py b/rest_framework/permissions.py index 437e9036d..974715ae1 100644 --- a/rest_framework/permissions.py +++ b/rest_framework/permissions.py @@ -77,7 +77,7 @@ class OR: if hasperm1 and hasperm1 is not NotImplemented: return hasperm1 hasperm2 = self.op2.has_permission(request, view) - return hasperm1 if hasperm2 is NotImplemented else hasperm2 + return hasperm2 or hasperm1 def has_object_permission(self, request, view, obj): hasperm1 = self.op1.has_object_permission(request, view, obj) @@ -88,7 +88,7 @@ class OR: hasperm2 = self.op2.has_object_permission(request, view, obj) if hasperm2 is NotImplemented: hasperm2 = self.op2.has_permission(request, view) - return hasperm1 if hasperm2 is NotImplemented else hasperm2 + return hasperm2 or hasperm1 class NOT: diff --git a/tests/test_permissions.py b/tests/test_permissions.py index 6ca3566c9..33bc6cf4a 100644 --- a/tests/test_permissions.py +++ b/tests/test_permissions.py @@ -698,7 +698,7 @@ class PermissionsCompositionTests(TestCase): permissions.IsAdminUser | BasicObjectPerm ) - assert composed_perm().has_permission(request, None) is False + assert composed_perm().has_permission(request, None) is NotImplemented assert composed_perm().has_object_permission(request, None, None) is False def test_has_object_permission_not_implemented_true(self):