comparison pylons_app/lib/db_manage.py @ 417:3ed2d46a2ca7

permission refactoring, Implemented views for default permissions, fixes #23 user registration is controlled by permission system. Implemented manual registration option websetup fills default permissions
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 21 Aug 2010 16:34:37 +0200
parents b27d32cb3157
children 7c978511c951
comparison
equal deleted inserted replaced
416:25ab66a26975 417:3ed2d46a2ca7
32 sys.path.append(ROOT) 32 sys.path.append(ROOT)
33 33
34 from pylons_app.lib.auth import get_crypt_password 34 from pylons_app.lib.auth import get_crypt_password
35 from pylons_app.lib.utils import ask_ok 35 from pylons_app.lib.utils import ask_ok
36 from pylons_app.model import init_model 36 from pylons_app.model import init_model
37 from pylons_app.model.db import User, Permission, HgAppUi, HgAppSettings 37 from pylons_app.model.db import User, Permission, HgAppUi, HgAppSettings, \
38 UserToPerm
38 from pylons_app.model import meta 39 from pylons_app.model import meta
39 from sqlalchemy.engine import create_engine 40 from sqlalchemy.engine import create_engine
40 import logging 41 import logging
41 42
42 log = logging.getLogger(__name__) 43 log = logging.getLogger(__name__)
187 #module.(read|write|owner) 188 #module.(read|write|owner)
188 perms = [('repository.none', 'Repository no access'), 189 perms = [('repository.none', 'Repository no access'),
189 ('repository.read', 'Repository read access'), 190 ('repository.read', 'Repository read access'),
190 ('repository.write', 'Repository write access'), 191 ('repository.write', 'Repository write access'),
191 ('repository.admin', 'Repository admin access'), 192 ('repository.admin', 'Repository admin access'),
192 ('repository.create', 'Repository create'),
193 ('hg.admin', 'Hg Administrator'), 193 ('hg.admin', 'Hg Administrator'),
194 ('hg.create.repository', 'Repository create'),
195 ('hg.create.none', 'Repository creation disabled'),
196 ('hg.register.none', 'Register disabled'),
197 ('hg.register.manual_activate', 'Register new user with hg-app without manual activation'),
198 ('hg.register.auto_activate', 'Register new user with hg-app without auto activation'),
194 ] 199 ]
195 200
196 for p in perms: 201 for p in perms:
197 new_perm = Permission() 202 new_perm = Permission()
198 new_perm.permission_name = p[0] 203 new_perm.permission_name = p[0]
201 self.sa.add(new_perm) 206 self.sa.add(new_perm)
202 self.sa.commit() 207 self.sa.commit()
203 except: 208 except:
204 self.sa.rollback() 209 self.sa.rollback()
205 raise 210 raise
211
212 def populate_default_permissions(self):
213 log.info('creating default user permissions')
214
215 default_user = self.sa.query(User)\
216 .filter(User.username == 'default').scalar()
217
218 reg_perm = UserToPerm()
219 reg_perm.user = default_user
220 reg_perm.permission = self.sa.query(Permission)\
221 .filter(Permission.permission_name == 'hg.register.manual_activate')\
222 .scalar()
223
224 create_repo_perm = UserToPerm()
225 create_repo_perm.user = default_user
226 create_repo_perm.permission = self.sa.query(Permission)\
227 .filter(Permission.permission_name == 'hg.create.repository')\
228 .scalar()
229
230 default_repo_perm = UserToPerm()
231 default_repo_perm.user = default_user
232 default_repo_perm.permission = self.sa.query(Permission)\
233 .filter(Permission.permission_name == 'repository.read')\
234 .scalar()
235
236 try:
237 self.sa.add(reg_perm)
238 self.sa.add(create_repo_perm)
239 self.sa.add(default_repo_perm)
240 self.sa.commit()
241 except:
242 self.sa.rollback()
243 raise
244