comparison rhodecode/lib/db_manage.py @ 2825:f7a52d548fd0

merge with beta
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 07 Sep 2012 23:20:33 +0200
parents f9c685144aeb bbaf0b86a1fe
children 909143a4dde5
comparison
equal deleted inserted replaced
2793:4c13cedbde93 2825:f7a52d548fd0
245 hggit.ui_value = '' 245 hggit.ui_value = ''
246 hggit.ui_active = False 246 hggit.ui_active = False
247 Session().add(hggit) 247 Session().add(hggit)
248 248
249 notify('re-check default permissions') 249 notify('re-check default permissions')
250 self.klass.populate_default_permissions() 250 default_user = User.get_by_username(User.DEFAULT_USER)
251 perm = Permission.get_by_key('hg.fork.repository')
252 reg_perm = UserToPerm()
253 reg_perm.user = default_user
254 reg_perm.permission = perm
255 Session().add(reg_perm)
256
257 def step_7(self):
258 perm_fixes = self.klass.reset_permissions(User.DEFAULT_USER)
259 Session().commit()
260 if perm_fixes:
261 notify('There was an inconsistent state of permissions '
262 'detected for default user. Permissions are now '
263 'reset to the default value for default user. '
264 'Please validate and check default permissions '
265 'in admin panel')
251 266
252 upgrade_steps = [0] + range(curr_version + 1, __dbversion__ + 1) 267 upgrade_steps = [0] + range(curr_version + 1, __dbversion__ + 1)
253 268
254 # CALL THE PROPER ORDER OF STEPS TO PERFORM FULL UPGRADE 269 # CALL THE PROPER ORDER OF STEPS TO PERFORM FULL UPGRADE
255 _step = None 270 _step = None
468 483
469 if default is None: 484 if default is None:
470 log.debug('missing default permission for group %s adding' % g) 485 log.debug('missing default permission for group %s adding' % g)
471 ReposGroupModel()._create_default_perms(g) 486 ReposGroupModel()._create_default_perms(g)
472 487
488 def reset_permissions(self, username):
489 """
490 Resets permissions to default state, usefull when old systems had
491 bad permissions, we must clean them up
492
493 :param username:
494 :type username:
495 """
496 default_user = User.get_by_username(username)
497 if not default_user:
498 return
499
500 u2p = UserToPerm.query()\
501 .filter(UserToPerm.user == default_user).all()
502 fixed = False
503 if len(u2p) != len(User.DEFAULT_PERMISSIONS):
504 for p in u2p:
505 Session().delete(p)
506 fixed = True
507 self.populate_default_permissions()
508 return fixed
509
473 def config_prompt(self, test_repo_path='', retries=3, defaults={}): 510 def config_prompt(self, test_repo_path='', retries=3, defaults={}):
474 _path = defaults.get('repos_location') 511 _path = defaults.get('repos_location')
475 if retries == 3: 512 if retries == 3:
476 log.info('Setting up repositories config') 513 log.info('Setting up repositories config')
477 514
504 sys.exit('max retries reached') 541 sys.exit('max retries reached')
505 if path_ok is False: 542 if path_ok is False:
506 retries -= 1 543 retries -= 1
507 return self.config_prompt(test_repo_path, retries) 544 return self.config_prompt(test_repo_path, retries)
508 545
509 return path 546 real_path = os.path.realpath(path)
547
548 if real_path != path:
549 if not ask_ok(('Path looks like a symlink, Rhodecode will store '
550 'given path as %s ? [y/n]') % (real_path)):
551 log.error('Canceled by user')
552 sys.exit(-1)
553
554 return real_path
510 555
511 def create_settings(self, path): 556 def create_settings(self, path):
512 557
513 self.create_ui_settings() 558 self.create_ui_settings()
514 559
595 def populate_default_permissions(self): 640 def populate_default_permissions(self):
596 log.info('creating default user permissions') 641 log.info('creating default user permissions')
597 642
598 default_user = User.get_by_username('default') 643 default_user = User.get_by_username('default')
599 644
600 for def_perm in ['hg.register.manual_activate', 'hg.create.repository', 645 for def_perm in User.DEFAULT_PERMISSIONS:
601 'hg.fork.repository', 'repository.read']:
602 646
603 perm = self.sa.query(Permission)\ 647 perm = self.sa.query(Permission)\
604 .filter(Permission.permission_name == def_perm)\ 648 .filter(Permission.permission_name == def_perm)\
605 .scalar() 649 .scalar()
606 if not perm: 650 if not perm: