changeset 3239:a9565b8b429b beta

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
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 28 Jan 2013 00:02:09 +0100
parents 26bf9c8baad2
children af2059eead28
files rhodecode/controllers/admin/repos.py rhodecode/controllers/admin/settings.py rhodecode/controllers/forks.py rhodecode/controllers/settings.py rhodecode/model/db.py
diffstat 5 files changed, 19 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- 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()
--- 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()
 
--- 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
--- 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)
--- 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 --')]