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