# HG changeset patch # User Marcin Kuzminski # Date 1282408288 -7200 # Node ID 63c697d1a631c2a44409b1a3b0c682d46e3542f1 # Parent 3ed2d46a2ca7983fbccbd3b8eb45afb6ff713bcf added logic for changin defualt permissions, and option to overwrite all defualt permissions on each repository fixed registration form text diff -r 3ed2d46a2ca7 -r 63c697d1a631 pylons_app/controllers/admin/permissions.py --- a/pylons_app/controllers/admin/permissions.py Sat Aug 21 16:34:37 2010 +0200 +++ b/pylons_app/controllers/admin/permissions.py Sat Aug 21 18:31:28 2010 +0200 @@ -97,6 +97,7 @@ try: form_result = _form.to_python(dict(request.POST)) + form_result.update({'perm_user_name':id}) permission_model.update(form_result) h.flash(_('Default permissions updated succesfully'), category='success') diff -r 3ed2d46a2ca7 -r 63c697d1a631 pylons_app/controllers/login.py --- a/pylons_app/controllers/login.py Sat Aug 21 16:34:37 2010 +0200 +++ b/pylons_app/controllers/login.py Sat Aug 21 18:31:28 2010 +0200 @@ -67,8 +67,9 @@ user_model = UserModel() c.auto_active = False for perm in user_model.get_default().user_perms: + print perm.permission.permission_name if perm.permission.permission_name == 'hg.register.auto_activate': - c.auto_active = False + c.auto_active = True break if request.POST: diff -r 3ed2d46a2ca7 -r 63c697d1a631 pylons_app/lib/auth.py --- a/pylons_app/lib/auth.py Sat Aug 21 16:34:37 2010 +0200 +++ b/pylons_app/lib/auth.py Sat Aug 21 18:31:28 2010 +0200 @@ -124,6 +124,8 @@ else: user.is_authenticated = False meta.Session.remove() + from pprint import pprint + pprint(user.permissions) return user def fill_perms(user): @@ -164,10 +166,7 @@ #default global for perm in default_perms: user.permissions['global'].add(perm.UserToPerm.permission.permission_name) - -# user.permissions['global'].add('hg.create.repository') -# user.permissions['global'].add('hg.register') - + #default repositories for perm in default_perms: if perm.Repository.private and not perm.Repository.user_id == user.user_id: diff -r 3ed2d46a2ca7 -r 63c697d1a631 pylons_app/model/forms.py --- a/pylons_app/model/forms.py Sat Aug 21 16:34:37 2010 +0200 +++ b/pylons_app/model/forms.py Sat Aug 21 18:31:28 2010 +0200 @@ -332,6 +332,7 @@ class _DefaultPermissionsForm(formencode.Schema): allow_extra_fields = True filter_extra_fields = True + overwrite_default = OneOf(['true', 'false'], if_missing='false') default_perm = OneOf(perms_choices) default_register = OneOf(register_choices) default_create = OneOf(create_choices) diff -r 3ed2d46a2ca7 -r 63c697d1a631 pylons_app/model/permission_model.py --- a/pylons_app/model/permission_model.py Sat Aug 21 16:34:37 2010 +0200 +++ b/pylons_app/model/permission_model.py Sat Aug 21 18:31:28 2010 +0200 @@ -24,9 +24,10 @@ """ from pylons.i18n.translation import _ -from pylons_app.model.db import User, Permission +from pylons_app.model.db import User, Permission, UserToPerm, RepoToPerm from pylons_app.model.meta import Session import logging +import traceback log = logging.getLogger(__name__) @@ -47,5 +48,41 @@ def update(self, form_result): - print form_result - pass + perm_user = self.sa.query(User)\ + .filter(User.username == form_result['perm_user_name']).scalar() + u2p = self.sa.query(UserToPerm).filter(UserToPerm.user == perm_user).all() + if len(u2p) != 3: + raise Exception('There is more than 3 defined \ + permissions for defualt user. This should not happen please verify\ + your database') + + try: + #stage 1 change defaults + for p in u2p: + if p.permission.permission_name.startswith('repository.'): + p.permission = self.get_permission_by_name(form_result['default_perm']) + self.sa.add(p) + + if 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.'): + p.permission = self.get_permission_by_name(form_result['default_create']) + self.sa.add(p) + #stage 2 update all default permissions for repos if checked + if form_result['overwrite_default'] == 'true': + for r2p in self.sa.query(RepoToPerm).filter(RepoToPerm.user == perm_user).all(): + r2p.permission = self.get_permission_by_name(form_result['default_perm']) + self.sa.add(r2p) + + self.sa.commit() + except: + log.error(traceback.format_exc()) + self.sa.rollback() + raise + + + + + diff -r 3ed2d46a2ca7 -r 63c697d1a631 pylons_app/templates/admin/permissions/permissions.html --- a/pylons_app/templates/admin/permissions/permissions.html Sat Aug 21 16:34:37 2010 +0200 +++ b/pylons_app/templates/admin/permissions/permissions.html Sat Aug 21 18:31:28 2010 +0200 @@ -33,7 +33,13 @@
${h.select('default_perm','',c.perms_choices)} -
+ + ${h.checkbox('overwrite_default','true')} + +