diff --git a/pylons_app/model/permission_model.py b/pylons_app/model/permission_model.py --- a/pylons_app/model/permission_model.py +++ b/pylons_app/model/permission_model.py @@ -24,9 +24,10 @@ Model for permissions """ 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 @@ class PermissionModel(object): 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 + + + + +