Skip to content

Commit 6f2c0db

Browse files
permissions must return a boolean
`x and y` actually returns object y when both are true. the means P & IsAuthenticated will fail with TypeError: unsupported operand type(s) for &: 'instance' and 'bool' as IsAuthenticated now returns a CallableBool which does not overload __ror__
1 parent 9d001cd commit 6f2c0db

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

rest_framework/permissions.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ class IsAuthenticated(BasePermission):
110110
"""
111111

112112
def has_permission(self, request, view):
113-
return request.user and request.user.is_authenticated
113+
return bool(request.user and request.user.is_authenticated)
114114

115115

116116
class IsAdminUser(BasePermission):
@@ -119,7 +119,7 @@ class IsAdminUser(BasePermission):
119119
"""
120120

121121
def has_permission(self, request, view):
122-
return request.user and request.user.is_staff
122+
return bool(request.user and request.user.is_staff)
123123

124124

125125
class IsAuthenticatedOrReadOnly(BasePermission):
@@ -128,7 +128,7 @@ class IsAuthenticatedOrReadOnly(BasePermission):
128128
"""
129129

130130
def has_permission(self, request, view):
131-
return (
131+
return bool(
132132
request.method in SAFE_METHODS or
133133
request.user and
134134
request.user.is_authenticated

0 commit comments

Comments
 (0)