Mercurial > kallithea
comparison pylons_app/model/permission_model.py @ 418:63c697d1a631
added logic for changin defualt permissions, and option to overwrite all defualt permissions on each repository
fixed registration form text
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 21 Aug 2010 18:31:28 +0200 |
parents | 3ed2d46a2ca7 |
children |
comparison
equal
deleted
inserted
replaced
417:3ed2d46a2ca7 | 418:63c697d1a631 |
---|---|
22 Model for permissions | 22 Model for permissions |
23 @author: marcink | 23 @author: marcink |
24 """ | 24 """ |
25 | 25 |
26 from pylons.i18n.translation import _ | 26 from pylons.i18n.translation import _ |
27 from pylons_app.model.db import User, Permission | 27 from pylons_app.model.db import User, Permission, UserToPerm, RepoToPerm |
28 from pylons_app.model.meta import Session | 28 from pylons_app.model.meta import Session |
29 import logging | 29 import logging |
30 import traceback | |
30 log = logging.getLogger(__name__) | 31 log = logging.getLogger(__name__) |
31 | 32 |
32 | 33 |
33 class PermissionModel(object): | 34 class PermissionModel(object): |
34 | 35 |
45 return self.sa.query(Permission)\ | 46 return self.sa.query(Permission)\ |
46 .filter(Permission.permission_name == name).scalar() | 47 .filter(Permission.permission_name == name).scalar() |
47 | 48 |
48 | 49 |
49 def update(self, form_result): | 50 def update(self, form_result): |
50 print form_result | 51 perm_user = self.sa.query(User)\ |
51 pass | 52 .filter(User.username == form_result['perm_user_name']).scalar() |
53 u2p = self.sa.query(UserToPerm).filter(UserToPerm.user == perm_user).all() | |
54 if len(u2p) != 3: | |
55 raise Exception('There is more than 3 defined \ | |
56 permissions for defualt user. This should not happen please verify\ | |
57 your database') | |
58 | |
59 try: | |
60 #stage 1 change defaults | |
61 for p in u2p: | |
62 if p.permission.permission_name.startswith('repository.'): | |
63 p.permission = self.get_permission_by_name(form_result['default_perm']) | |
64 self.sa.add(p) | |
65 | |
66 if p.permission.permission_name.startswith('hg.register.'): | |
67 p.permission = self.get_permission_by_name(form_result['default_register']) | |
68 self.sa.add(p) | |
69 | |
70 if p.permission.permission_name.startswith('hg.create.'): | |
71 p.permission = self.get_permission_by_name(form_result['default_create']) | |
72 self.sa.add(p) | |
73 #stage 2 update all default permissions for repos if checked | |
74 if form_result['overwrite_default'] == 'true': | |
75 for r2p in self.sa.query(RepoToPerm).filter(RepoToPerm.user == perm_user).all(): | |
76 r2p.permission = self.get_permission_by_name(form_result['default_perm']) | |
77 self.sa.add(r2p) | |
78 | |
79 self.sa.commit() | |
80 except: | |
81 log.error(traceback.format_exc()) | |
82 self.sa.rollback() | |
83 raise | |
84 | |
85 | |
86 | |
87 | |
88 |