changeset 3543:6af65ba41115 beta

merge with UI branch
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 18 Mar 2013 18:17:58 +0100
parents af96fb19b53a (diff) fc79b3d5beb7 (current diff)
children c0a157ab9a15
files
diffstat 5 files changed, 40 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/admin/repos.py	Mon Mar 18 18:16:23 2013 +0100
+++ b/rhodecode/controllers/admin/repos.py	Mon Mar 18 18:17:58 2013 +0100
@@ -239,8 +239,10 @@
         #override the choices with extracted revisions !
         choices, c.landing_revs = ScmModel().get_repo_landing_revs(repo_name)
         c.landing_revs_choices = choices
-
-        _form = RepoForm(edit=True, old_data={'repo_name': repo_name},
+        repo = Repository.get_by_repo_name(repo_name)
+        _form = RepoForm(edit=True, old_data={'repo_name': repo_name,
+                                              'repo_group': repo.group.get_dict() \
+                                              if repo.group else {}},
                          repo_groups=c.repo_groups_choices,
                          landing_revs=c.landing_revs_choices)()
         try:
--- a/rhodecode/controllers/settings.py	Mon Mar 18 18:16:23 2013 +0100
+++ b/rhodecode/controllers/settings.py	Mon Mar 18 18:17:58 2013 +0100
@@ -109,9 +109,11 @@
         #override the choices with extracted revisions !
         choices, c.landing_revs = ScmModel().get_repo_landing_revs(repo_name)
         c.landing_revs_choices = choices
-
+        repo = Repository.get_by_repo_name(repo_name)
         _form = RepoSettingsForm(edit=True,
-                                 old_data={'repo_name': repo_name},
+                                old_data={'repo_name': repo_name,
+                                          'repo_group': repo.group.get_dict() \
+                                              if repo.group else {}},
                                  repo_groups=c.repo_groups_choices,
                                  landing_revs=c.landing_revs_choices)()
         try:
--- a/rhodecode/lib/paster_commands/update_repoinfo.py	Mon Mar 18 18:16:23 2013 +0100
+++ b/rhodecode/lib/paster_commands/update_repoinfo.py	Mon Mar 18 18:17:58 2013 +0100
@@ -68,12 +68,21 @@
             repo_list = Repository.getAll()
         RepoModel.update_repoinfo(repositories=repo_list)
         Session().commit()
+
+        if self.options.invalidate_cache:
+            for r in repo_list:
+                r.invalidate
+        Session().commit()
         log.info('Updated cache for %s repositories' % (len(repo_list)))
 
     def update_parser(self):
         self.parser.add_option('--update-only',
-                          action='store',
-                          dest='repo_update_list',
-                          help="Specifies a comma separated list of repositores "
-                                "to update last commit info for. OPTIONAL",
-                          )
+                           action='store',
+                           dest='repo_update_list',
+                           help="Specifies a comma separated list of repositores "
+                                "to update last commit info for. OPTIONAL")
+        self.parser.add_option('--invalidate-cache',
+                           action='store_true',
+                           dest='invalidate_cache',
+                           help="Trigger cache invalidation event for repos. "
+                                "OPTIONAL")
--- a/rhodecode/model/forms.py	Mon Mar 18 18:16:23 2013 +0100
+++ b/rhodecode/model/forms.py	Mon Mar 18 18:17:58 2013 +0100
@@ -182,7 +182,7 @@
         filter_extra_fields = False
         repo_name = All(v.UnicodeString(strip=True, min=1, not_empty=True),
                         v.SlugifyName())
-        repo_group = All(v.CanWriteGroup(),
+        repo_group = All(v.CanWriteGroup(old_data),
                          v.OneOf(repo_groups, hideList=True))
         repo_type = v.OneOf(supported_backends)
         repo_description = v.UnicodeString(strip=True, min=1, not_empty=False)
@@ -227,7 +227,7 @@
         filter_extra_fields = False
         repo_name = All(v.UnicodeString(strip=True, min=1, not_empty=True),
                         v.SlugifyName())
-        repo_group = All(v.CanWriteGroup(),
+        repo_group = All(v.CanWriteGroup(old_data),
                          v.OneOf(repo_groups, hideList=True))
         repo_description = v.UnicodeString(strip=True, min=1, not_empty=False)
         repo_private = v.StringBoolean(if_missing=False)
--- a/rhodecode/model/validators.py	Mon Mar 18 18:16:23 2013 +0100
+++ b/rhodecode/model/validators.py	Mon Mar 18 18:17:58 2013 +0100
@@ -16,6 +16,7 @@
 from rhodecode.lib.compat import OrderedSet
 from rhodecode.lib import ipaddr
 from rhodecode.lib.utils import repo_name_slug
+from rhodecode.lib.utils2 import safe_int
 from rhodecode.model.db import RepoGroup, Repository, UserGroup, User,\
     ChangesetStatus
 from rhodecode.lib.exceptions import LdapImportError
@@ -472,7 +473,7 @@
     return _validator
 
 
-def CanWriteGroup():
+def CanWriteGroup(old_data=None):
     class _validator(formencode.validators.FancyValidator):
         messages = {
             'permission_denied': _(u"You don't have permissions "
@@ -493,18 +494,20 @@
             val = HasReposGroupPermissionAny('group.write', 'group.admin')
             can_create_repos = HasPermissionAny('hg.admin', 'hg.create.repository')
             forbidden = not val(gr_name, 'can write into group validator')
-            #parent group need to be existing
-            if gr and forbidden:
-                msg = M(self, 'permission_denied', state)
-                raise formencode.Invalid(msg, value, state,
-                    error_dict=dict(repo_type=msg)
-                )
-            ## check if we can write to root location !
-            elif gr is None and can_create_repos() is False:
-                msg = M(self, 'permission_denied_root', state)
-                raise formencode.Invalid(msg, value, state,
-                    error_dict=dict(repo_type=msg)
-                )
+            value_changed = True  # old_data['repo_group'].get('group_id') != safe_int(value)
+            if value_changed:  # do check if we changed the value
+                #parent group need to be existing
+                if gr and forbidden:
+                    msg = M(self, 'permission_denied', state)
+                    raise formencode.Invalid(msg, value, state,
+                        error_dict=dict(repo_type=msg)
+                    )
+                ## check if we can write to root location !
+                elif gr is None and can_create_repos() is False:
+                    msg = M(self, 'permission_denied_root', state)
+                    raise formencode.Invalid(msg, value, state,
+                        error_dict=dict(repo_type=msg)
+                    )
 
     return _validator