@@ -47,73 +47,71 @@ def __call__(self, *args, **kwargs):
47
47
return self .operator_class (op1 , op2 )
48
48
49
49
50
- class AND :
51
- def __init__ (self , op1 , op2 ):
52
- self .op1 = op1
53
- self .op2 = op2
50
+ class BasePermissionMetaclass (OperationHolderMixin , type ):
51
+ pass
52
+
53
+
54
+ class BasePermission (metaclass = BasePermissionMetaclass ):
55
+ """
56
+ A base class from which all permission classes should inherit.
57
+ """
54
58
55
59
def has_permission (self , request , view ):
56
- return (
57
- self . op1 . has_permission ( request , view ) and
58
- self . op2 . has_permission ( request , view )
59
- )
60
+ """
61
+ Return `True` if permission is granted, `False` otherwise.
62
+ """
63
+ return True
60
64
61
65
def has_object_permission (self , request , view , obj ):
62
- return (
63
- self .op1 .has_object_permission (request , view , obj ) and
64
- self .op2 .has_object_permission (request , view , obj )
65
- )
66
-
66
+ """
67
+ Return `True` if permission is granted, `False` otherwise.
68
+ """
69
+ return True
67
70
68
- class OR :
69
- def __init__ (self , op1 , op2 ):
70
- self .op1 = op1
71
- self .op2 = op2
71
+ class AND (BasePermission ):
72
+ def __init__ (self , * args ):
73
+ self .permissions = args
72
74
73
75
def has_permission (self , request , view ):
74
- return (
75
- self . op1 . has_permission (request , view<
10000
/span>) or
76
- self . op2 . has_permission ( request , view )
77
- )
76
+ for permission in self . permissions :
77
+ if not permissions . has_permission (request , view ):
78
+ return False
79
+ return True
78
80
79
81
def has_object_permission (self , request , view , obj ):
80
- return (
81
- self . op1 . has_object_permission (request , view , obj ) or
82
- self . op2 . has_object_permission ( request , view , obj )
83
- )
82
+ for permission in self . permissions :
83
+ if not permissions . has_object_permission (request , view , obj ):
84
+ return False
85
+ return True
84
86
85
87
86
- class NOT :
87
- def __init__ (self , op1 ):
88
- self .op1 = op1
88
+ class OR ( BasePermission ) :
89
+ def __init__ (self , * args ):
90
+ self .permissions = op1
89
91
90
92
def has_permission (self , request , view ):
91
- return not self .op1 .has_permission (request , view )
93
+ for permission in self .permissions :
94
+ if permission .has_permission (request , view ):
95
+ return True
96
+ return False
92
97
93
98
def has_object_permission (self , request , view , obj ):
94
- return not self .op1 .has_object_permission (request , view , obj )
99
+ for permission in self .permissions :
100
+ if permission .has_object_permission (request , view , obj ):
101
+ return True
102
+ return False
95
103
96
104
97
- class BasePermissionMetaclass (OperationHolderMixin , type ):
98
- pass
99
-
100
-
101
- class BasePermission (metaclass = BasePermissionMetaclass ):
102
- """
103
- A base class from which all permission classes should inherit.
104
- """
105
+ class NOT (BasePermission ):
106
+ def __init__ (self , op1 ):
107
+ self .op1 = op1
105
108
106
109
def has_permission (self , request , view ):
107
- """
108
- Return `True` if permission is granted, `False` otherwise.
109
- """
110
- return True
110
+ return not self .op1 .has_permission (request , view )
111
111
112
112
def has_object_permission (self , request , view , obj ):
113
- """
114
- Return `True` if permission is granted, `False` otherwise.
115
- """
116
- return True
113
+ return not self .op1 .has_object_permission (request , view , obj )
114
+
117
115
118
116
119
117
class AllowAny (BasePermission ):
0 commit comments