# HG changeset patch # User Marcin Kuzminski # Date 1359327729 -3600 # Node ID a9565b8b429b544f301e67929cc9d6fc4949a611 # Parent 26bf9c8baad2357f584fd803760b65f689bededa filter out repo groups choices to only ones that you have write+ access to. Before it was read+ access and you got proper error saying that you don't have write permissions to group to create repo in. Filtering out the read groups is less confusing for users. ref #730 diff -r 26bf9c8baad2 -r a9565b8b429b rhodecode/controllers/admin/repos.py --- a/rhodecode/controllers/admin/repos.py Sun Jan 27 22:37:55 2013 +0100 +++ b/rhodecode/controllers/admin/repos.py Mon Jan 28 00:02:09 2013 +0100 @@ -45,7 +45,7 @@ from rhodecode.model.db import User, Repository, UserFollowing, RepoGroup,\ RhodeCodeSetting from rhodecode.model.forms import RepoForm -from rhodecode.model.scm import ScmModel +from rhodecode.model.scm import ScmModel, GroupList from rhodecode.model.repo import RepoModel from rhodecode.lib.compat import json from sqlalchemy.sql.expression import func @@ -68,7 +68,9 @@ super(ReposController, self).__before__() def __load_defaults(self): - c.repo_groups = RepoGroup.groups_choices(check_perms=True) + acl_groups = GroupList(RepoGroup.query().all(), + perm_set=['group.write', 'group.admin']) + c.repo_groups = RepoGroup.groups_choices(groups=acl_groups) c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups) repo_model = RepoModel() diff -r 26bf9c8baad2 -r a9565b8b429b rhodecode/controllers/admin/settings.py --- a/rhodecode/controllers/admin/settings.py Sun Jan 27 22:37:55 2013 +0100 +++ b/rhodecode/controllers/admin/settings.py Mon Jan 28 00:02:09 2013 +0100 @@ -46,7 +46,7 @@ RhodeCodeSetting, PullRequest, PullRequestReviewers from rhodecode.model.forms import UserForm, ApplicationSettingsForm, \ ApplicationUiSettingsForm, ApplicationVisualisationForm -from rhodecode.model.scm import ScmModel +from rhodecode.model.scm import ScmModel, GroupList from rhodecode.model.user import UserModel from rhodecode.model.repo import RepoModel from rhodecode.model.db import User @@ -483,7 +483,9 @@ def create_repository(self): """GET /_admin/create_repository: Form to create a new item""" - c.repo_groups = RepoGroup.groups_choices(check_perms=True) + acl_groups = GroupList(RepoGroup.query().all(), + perm_set=['group.write', 'group.admin']) + c.repo_groups = RepoGroup.groups_choices(groups=acl_groups) c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups) choices, c.landing_revs = ScmModel().get_repo_landing_revs() diff -r 26bf9c8baad2 -r a9565b8b429b rhodecode/controllers/forks.py --- a/rhodecode/controllers/forks.py Sun Jan 27 22:37:55 2013 +0100 +++ b/rhodecode/controllers/forks.py Mon Jan 28 00:02:09 2013 +0100 @@ -41,7 +41,7 @@ from rhodecode.model.db import Repository, RepoGroup, UserFollowing, User from rhodecode.model.repo import RepoModel from rhodecode.model.forms import RepoForkForm -from rhodecode.model.scm import ScmModel +from rhodecode.model.scm import ScmModel, GroupList from rhodecode.lib.utils2 import safe_int log = logging.getLogger(__name__) @@ -54,7 +54,9 @@ super(ForksController, self).__before__() def __load_defaults(self): - c.repo_groups = RepoGroup.groups_choices(check_perms=True) + acl_groups = GroupList(RepoGroup.query().all(), + perm_set=['group.write', 'group.admin']) + c.repo_groups = RepoGroup.groups_choices(groups=acl_groups) c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups) choices, c.landing_revs = ScmModel().get_repo_landing_revs() c.landing_revs_choices = choices diff -r 26bf9c8baad2 -r a9565b8b429b rhodecode/controllers/settings.py --- a/rhodecode/controllers/settings.py Sun Jan 27 22:37:55 2013 +0100 +++ b/rhodecode/controllers/settings.py Mon Jan 28 00:02:09 2013 +0100 @@ -44,7 +44,7 @@ from rhodecode.model.repo import RepoModel from rhodecode.model.db import RepoGroup, Repository from rhodecode.model.meta import Session -from rhodecode.model.scm import ScmModel +from rhodecode.model.scm import ScmModel, GroupList log = logging.getLogger(__name__) @@ -56,7 +56,9 @@ super(SettingsController, self).__before__() def __load_defaults(self): - c.repo_groups = RepoGroup.groups_choices(check_perms=True) + acl_groups = GroupList(RepoGroup.query().all(), + perm_set=['group.write', 'group.admin']) + c.repo_groups = RepoGroup.groups_choices(groups=acl_groups) c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups) repo_model = RepoModel() @@ -73,8 +75,7 @@ """ self.__load_defaults() - c.repo_info = db_repo = Repository.get_by_repo_name(repo_name) - repo = db_repo.scm_instance + c.repo_info = Repository.get_by_repo_name(repo_name) if c.repo_info is None: h.not_mapped_error(repo_name) diff -r 26bf9c8baad2 -r a9565b8b429b rhodecode/model/db.py --- a/rhodecode/model/db.py Sun Jan 27 22:37:55 2013 +0100 +++ b/rhodecode/model/db.py Mon Jan 28 00:02:09 2013 +0100 @@ -1177,15 +1177,11 @@ self.group_name) @classmethod - def groups_choices(cls, groups=None, check_perms=False, show_empty_group=True): + def groups_choices(cls, groups=None, show_empty_group=True): from webhelpers.html import literal as _literal - from rhodecode.model.scm import ScmModel if not groups: groups = cls.query().all() - if check_perms: - #filter group user have access to, it's done - #magically inside ScmModel based on current user - groups = ScmModel().get_repos_groups(groups) + repo_groups = [] if show_empty_group: repo_groups = [('-1', '-- no parent --')]