changeset 2425:a970b6e7c5a2 beta

Update permissions from admin permissions menu, also overwrites defaults for repos groups
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 08 Jun 2012 02:25:04 +0200
parents 2dc4cfa44b25
children b80c2f617d44
files rhodecode/model/permission.py
diffstat 1 files changed, 17 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/model/permission.py	Thu Jun 07 22:23:39 2012 +0200
+++ b/rhodecode/model/permission.py	Fri Jun 08 02:25:04 2012 +0200
@@ -31,7 +31,8 @@
 from rhodecode.lib.caching_query import FromCache
 
 from rhodecode.model import BaseModel
-from rhodecode.model.db import User, Permission, UserToPerm, UserRepoToPerm
+from rhodecode.model.db import User, Permission, UserToPerm, UserRepoToPerm,\
+    UserRepoGroupToPerm
 
 log = logging.getLogger(__name__)
 
@@ -87,23 +88,33 @@
                                        form_result['default_perm'])
                     self.sa.add(p)
 
-                if p.permission.permission_name.startswith('hg.register.'):
+                elif p.permission.permission_name.startswith('hg.register.'):
                     p.permission = self.get_permission_by_name(
                                        form_result['default_register'])
                     self.sa.add(p)
 
-                if p.permission.permission_name.startswith('hg.create.'):
+                elif p.permission.permission_name.startswith('hg.create.'):
                     p.permission = self.get_permission_by_name(
                                         form_result['default_create'])
                     self.sa.add(p)
 
+            _def_name = form_result['default_perm'].split('repository.')[-1]
             #stage 2 update all default permissions for repos if checked
             if form_result['overwrite_default'] == True:
+                _def = self.get_permission_by_name('repository.' + _def_name)
+                # repos
                 for r2p in self.sa.query(UserRepoToPerm)\
-                               .filter(UserRepoToPerm.user == perm_user).all():
-                    r2p.permission = self.get_permission_by_name(
-                                         form_result['default_perm'])
+                               .filter(UserRepoToPerm.user == perm_user)\
+                               .all():
+                    r2p.permission = _def
                     self.sa.add(r2p)
+                # groups
+                _def = self.get_permission_by_name('group.' + _def_name)
+                for g2p in self.sa.query(UserRepoGroupToPerm)\
+                               .filter(UserRepoGroupToPerm.user == perm_user)\
+                               .all():
+                    g2p.permission = _def
+                    self.sa.add(g2p)
 
             # stage 3 set anonymous access
             if perm_user.username == 'default':