changeset 8501:2a2a50e10026 stable

repo_groups: fix select of parent group when adding repo group h.select was passed a list of repo groups where group_id was integer, but parent_group in the request was a string - thus no match. Do as in repos controller create_repository (and in error handling): leave it to htmlfill to patch up the generated HTML using defaults ... but make sure we always have a default.
author Mads Kiilerich <mads@kiilerich.com>
date Thu, 19 Nov 2020 21:15:34 +0100
parents 48b9fdef5e7f
children 3ea3d3a2b3e3
files kallithea/controllers/admin/repo_groups.py kallithea/controllers/admin/repos.py kallithea/templates/admin/repo_groups/repo_group_add.html kallithea/templates/admin/repos/repo_add_base.html
diffstat 4 files changed, 14 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/controllers/admin/repo_groups.py	Wed Nov 11 17:03:40 2020 +0100
+++ b/kallithea/controllers/admin/repo_groups.py	Thu Nov 19 21:15:34 2020 +0100
@@ -174,14 +174,14 @@
         raise HTTPFound(location=url('repos_group_home', group_name=gr.group_name))
 
     def new(self):
+        parent_group_id = safe_int(request.GET.get('parent_group') or '-1')
         if HasPermissionAny('hg.admin')('group create'):
             # we're global admin, we're ok and we can create TOP level groups
             pass
         else:
             # we pass in parent group into creation form, thus we know
             # what would be the group, we can check perms here !
-            group_id = safe_int(request.GET.get('parent_group'))
-            group = RepoGroup.get(group_id) if group_id else None
+            group = RepoGroup.get(parent_group_id) if parent_group_id else None
             group_name = group.group_name if group else None
             if HasRepoGroupPermissionLevel('admin')(group_name, 'group create'):
                 pass
@@ -189,7 +189,13 @@
                 raise HTTPForbidden()
 
         self.__load_defaults()
-        return render('admin/repo_groups/repo_group_add.html')
+        return htmlfill.render(
+            render('admin/repo_groups/repo_group_add.html'),
+            defaults={'parent_group_id': parent_group_id},
+            errors={},
+            prefix_error=False,
+            encoding="UTF-8",
+            force_defaults=False)
 
     @HasRepoGroupPermissionLevelDecorator('admin')
     def update(self, group_name):
--- a/kallithea/controllers/admin/repos.py	Wed Nov 11 17:03:40 2020 +0100
+++ b/kallithea/controllers/admin/repos.py	Thu Nov 19 21:15:34 2020 +0100
@@ -157,7 +157,9 @@
             if prg is None or not any(rgc[0] == prg.group_id
                                       for rgc in c.repo_groups):
                 raise HTTPForbidden
-            defaults.update({'repo_group': parent_group})
+        else:
+            parent_group = '-1'
+        defaults.update({'repo_group': parent_group})
 
         return htmlfill.render(
             render('admin/repos/repo_add.html'),
--- a/kallithea/templates/admin/repo_groups/repo_group_add.html	Wed Nov 11 17:03:40 2020 +0100
+++ b/kallithea/templates/admin/repo_groups/repo_group_add.html	Thu Nov 19 21:15:34 2020 +0100
@@ -41,7 +41,7 @@
             <div class="form-group">
                 <label class="control-label" for="parent_group_id">${_('Group parent')}:</label>
                 <div>
-                    ${h.select('parent_group_id',request.GET.get('parent_group'),c.repo_groups,class_='form-control')}
+                    ${h.select('parent_group_id',None,c.repo_groups,class_='form-control')}
                 </div>
             </div>
 
--- a/kallithea/templates/admin/repos/repo_add_base.html	Wed Nov 11 17:03:40 2020 +0100
+++ b/kallithea/templates/admin/repos/repo_add_base.html	Thu Nov 19 21:15:34 2020 +0100
@@ -27,7 +27,7 @@
         <div class="form-group">
             <label class="control-label" for="repo_group">${_('Repository group')}:</label>
             <div>
-                ${h.select('repo_group',request.GET.get('parent_group'),c.repo_groups,class_='form-control')}
+                ${h.select('repo_group',None,c.repo_groups,class_='form-control')}
                 <span class="help-block">${_('Optionally select a group to put this repository into.')}</span>
             </div>
         </div>