7
7
from guardian .exceptions import WrongAppError
8
8
from django .contrib .auth .models import User , Group , Permission
9
9
10
+
10
11
class PermissionBackend (ObjectPermissionBackend ):
12
+
11
13
def has_perm (self , user_obj , perm , obj = None ):
12
14
# check if user_obj and object are supported (pulled directly from guardian)
13
15
support , user_obj = check_support (user_obj , obj )
@@ -65,6 +67,7 @@ def has_group_perm(group, perm, obj):
65
67
ret .append (group )
66
68
return ret
67
69
70
+
68
71
def get_users_for_object (perm , obj ):
69
72
"""
70
73
returns a list of user objects that have the given permission on the given object
@@ -81,6 +84,7 @@ def get_users_for_object(perm, obj):
81
84
ret .append (user )
82
85
return ret
83
86
87
+
84
88
def get_nodegroups_by_perm (user , perms , any_perm = True ):
85
89
"""
86
90
returns a list of node groups that a user has the given permission on
@@ -97,10 +101,11 @@ def get_nodegroups_by_perm(user, perms, any_perm=True):
97
101
'models.write_nodegroup' ,
98
102
'models.delete_nodegroup' ,
99
103
'models.no_access_to_nodegroup'
100
- ], accept_global_perms = False , any_perm = True ))
104
+ ], accept_global_perms = False , any_perm = True ))
101
105
B = set (get_objects_for_user (user , perms , accept_global_perms = False , any_perm = any_perm ))
102
106
C = set (get_objects_for_user (user , perms , accept_global_perms = True , any_perm = any_perm ))
103
- return list (C - A | B )
107
+ return list (C - A | B )
108
+
104
109
105
110
def get_editable_resource_types (user ):
106
111
"""
@@ -113,6 +118,7 @@ def get_editable_resource_types(user):
113
118
114
119
return get_resource_types_by_perm (user , ['models.write_nodegroup' , 'models.delete_nodegroup' ])
115
120
121
+
116
122
def get_createable_resource_types (user ):
117
123
"""
118
124
returns a list of graphs that a user can create resource instances of
@@ -161,10 +167,12 @@ def user_can_edit_resources(user):
161
167
"""
162
168
163
169
if user .is_authenticated ():
164
- return user .is_superuser or (len (get_editable_resource_types (user )) > 0 and
165
- user .groups .filter (name__in = settings .RESOURCE_EDITOR_GROUPS ).exists ())
170
+ return user .is_superuser or \
171
+ len (get_editable_resource_types (user )) > 0 or \
172
+ user .groups .filter (name__in = settings .RESOURCE_EDITOR_GROUPS ).exists ()
166
173
return False
167
174
175
+
168
176
def user_can_read_concepts (user ):
169
177
"""
170
178
Requires that a user is a part of the RDM Administrator group
0 commit comments