##// END OF EJS Templates
user defined permission will update the global permissions, and overwrite default settings.
marcink -
r1267:d534aff5 beta
parent child Browse files
Show More
@@ -39,11 +39,15 b' from rhodecode.lib import generate_api_k'
39 39
40 40 log = logging.getLogger(__name__)
41 41
42
43 PERM_ = ''
44
42 45 PERM_WEIGHTS = {'repository.none':0,
43 46 'repository.read':1,
44 47 'repository.write':3,
45 48 'repository.admin':3}
46 49
50
47 51 class UserModel(BaseModel):
48 52
49 53 def get(self, user_id, cache=False):
@@ -260,9 +264,9 b' class UserModel(BaseModel):'
260 264 user.permissions['repositories'] = {}
261 265 user.permissions['global'] = set()
262 266
263 #===========================================================================
267 #======================================================================
264 268 # fetch default permissions
265 #===========================================================================
269 #======================================================================
266 270 default_user = self.get_by_username('default', cache=True)
267 271
268 272 default_perms = self.sa.query(RepoToPerm, Repository, Permission)\
@@ -271,9 +275,9 b' class UserModel(BaseModel):'
271 275 .filter(RepoToPerm.user == default_user).all()
272 276
273 277 if user.is_admin:
274 #=======================================================================
278 #==================================================================
275 279 # #admin have all default rights set to admin
276 #=======================================================================
280 #==================================================================
277 281 user.permissions['global'].add('hg.admin')
278 282
279 283 for perm in default_perms:
@@ -281,14 +285,13 b' class UserModel(BaseModel):'
281 285 user.permissions['repositories'][perm.RepoToPerm.repository.repo_name] = p
282 286
283 287 else:
284 #=======================================================================
288 #==================================================================
285 289 # set default permissions
286 #=======================================================================
290 #==================================================================
287 291
288 292 #default global
289 293 default_global_perms = self.sa.query(UserToPerm)\
290 .filter(UserToPerm.user == self.sa.query(User)\
291 .filter(User.username == 'default').one())
294 .filter(UserToPerm.user == User.by_username('default'))
292 295
293 296 for perm in default_global_perms:
294 297 user.permissions['global'].add(perm.permission.permission_name)
@@ -306,15 +309,23 b' class UserModel(BaseModel):'
306 309
307 310 user.permissions['repositories'][perm.RepoToPerm.repository.repo_name] = p
308 311
309 #=======================================================================
312 #==================================================================
310 313 # overwrite default with user permissions if any
311 #=======================================================================
312 user_perms = self.sa.query(RepoToPerm, Permission, Repository)\
314 #==================================================================
315
316 user_perms = self.sa.query(UserToPerm)\
317 .filter(UserToPerm.user ==
318 User.get(user.user_id)).all()
319
320 for perm in user_perms:
321 user.permissions['global'].add(perm.permission.permission_name)
322
323 user_repo_perms = self.sa.query(RepoToPerm, Permission, Repository)\
313 324 .join((Repository, RepoToPerm.repository_id == Repository.repo_id))\
314 325 .join((Permission, RepoToPerm.permission_id == Permission.permission_id))\
315 326 .filter(RepoToPerm.user_id == user.user_id).all()
316 327
317 for perm in user_perms:
328 for perm in user_repo_perms:
318 329 if perm.Repository.user_id == user.user_id:#set admin if owner
319 330 p = 'repository.admin'
320 331 else:
General Comments 0
You need to be logged in to leave comments. Login now