Mercurial > kallithea
diff 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 |
line wrap: on
line diff
--- a/rhodecode/lib/db_manage.py Mon Sep 03 22:22:58 2012 +0200 +++ b/rhodecode/lib/db_manage.py Fri Sep 07 23:20:33 2012 +0200 @@ -247,7 +247,22 @@ Session().add(hggit) notify('re-check default permissions') - self.klass.populate_default_permissions() + default_user = User.get_by_username(User.DEFAULT_USER) + perm = Permission.get_by_key('hg.fork.repository') + reg_perm = UserToPerm() + reg_perm.user = default_user + reg_perm.permission = perm + Session().add(reg_perm) + + def step_7(self): + perm_fixes = self.klass.reset_permissions(User.DEFAULT_USER) + Session().commit() + if perm_fixes: + notify('There was an inconsistent state of permissions ' + 'detected for default user. Permissions are now ' + 'reset to the default value for default user. ' + 'Please validate and check default permissions ' + 'in admin panel') upgrade_steps = [0] + range(curr_version + 1, __dbversion__ + 1) @@ -470,6 +485,28 @@ log.debug('missing default permission for group %s adding' % g) ReposGroupModel()._create_default_perms(g) + def reset_permissions(self, username): + """ + Resets permissions to default state, usefull when old systems had + bad permissions, we must clean them up + + :param username: + :type username: + """ + default_user = User.get_by_username(username) + if not default_user: + return + + u2p = UserToPerm.query()\ + .filter(UserToPerm.user == default_user).all() + fixed = False + if len(u2p) != len(User.DEFAULT_PERMISSIONS): + for p in u2p: + Session().delete(p) + fixed = True + self.populate_default_permissions() + return fixed + def config_prompt(self, test_repo_path='', retries=3, defaults={}): _path = defaults.get('repos_location') if retries == 3: @@ -506,7 +543,15 @@ retries -= 1 return self.config_prompt(test_repo_path, retries) - return path + real_path = os.path.realpath(path) + + if real_path != path: + if not ask_ok(('Path looks like a symlink, Rhodecode will store ' + 'given path as %s ? [y/n]') % (real_path)): + log.error('Canceled by user') + sys.exit(-1) + + return real_path def create_settings(self, path): @@ -597,8 +642,7 @@ default_user = User.get_by_username('default') - for def_perm in ['hg.register.manual_activate', 'hg.create.repository', - 'hg.fork.repository', 'repository.read']: + for def_perm in User.DEFAULT_PERMISSIONS: perm = self.sa.query(Permission)\ .filter(Permission.permission_name == def_perm)\