create: fixed case for repo groups that didn't pre-fill the repo group from GET param.

- also added similar to repo selector for personal repo group.
This commit is contained in:
Marcin Kuzminski 2020-07-02 21:43:41 +02:00
parent 0d418610b8
commit 1b07afc2cd
4 changed files with 32 additions and 7 deletions

View file

@ -69,6 +69,7 @@ class AdminRepoGroupsView(BaseAppView, DataGridAppView):
c.repo_groups = RepoGroup.groups_choices(
groups=groups_with_admin_rights,
show_empty_group=allow_empty_group)
c.personal_repo_group = self._rhodecode_user.personal_repo_group
def _can_create_repo_group(self, parent_group_id=None):
is_admin = HasPermissionAny('hg.admin')('group create controller')
@ -261,15 +262,28 @@ class AdminRepoGroupsView(BaseAppView, DataGridAppView):
# perm check for admin, create_group perm or admin of parent_group
parent_group_id = safe_int(self.request.GET.get('parent_group'))
_gr = RepoGroup.get(parent_group_id)
if not self._can_create_repo_group(parent_group_id):
raise HTTPForbidden()
self._load_form_data(c)
defaults = {} # Future proof for default of repo group
parent_group_choice = '-1'
if not self._rhodecode_user.is_admin and self._rhodecode_user.personal_repo_group:
parent_group_choice = self._rhodecode_user.personal_repo_group
if parent_group_id and _gr:
if parent_group_id in [x[0] for x in c.repo_groups]:
parent_group_choice = safe_unicode(parent_group_id)
defaults.update({'group_parent_id': parent_group_choice})
data = render(
'rhodecode:templates/admin/repo_groups/repo_group_add.mako',
self._get_template_context(c), self.request)
html = formencode.htmlfill.render(
data,
defaults=defaults,

View file

@ -169,8 +169,8 @@ class AdminReposView(BaseAppView, DataGridAppView):
c = self.load_default_context()
new_repo = self.request.GET.get('repo', '')
parent_group = safe_int(self.request.GET.get('parent_group'))
_gr = RepoGroup.get(parent_group)
parent_group_id = safe_int(self.request.GET.get('parent_group'))
_gr = RepoGroup.get(parent_group_id)
if not HasPermissionAny('hg.admin', 'hg.create.repository')():
# you're not super admin nor have global create permissions,
@ -196,9 +196,9 @@ class AdminReposView(BaseAppView, DataGridAppView):
if not self._rhodecode_user.is_admin and self._rhodecode_user.personal_repo_group:
parent_group_choice = self._rhodecode_user.personal_repo_group
if parent_group and _gr:
if parent_group in [x[0] for x in c.repo_groups]:
parent_group_choice = safe_unicode(parent_group)
if parent_group_id and _gr:
if parent_group_id in [x[0] for x in c.repo_groups]:
parent_group_choice = safe_unicode(parent_group_id)
defaults.update({'repo_group': parent_group_choice})

View file

@ -44,7 +44,12 @@
<label for="group_parent_id">${_('Repository group')}:</label>
</div>
<div class="select">
${h.select('group_parent_id',request.GET.get('parent_group'),c.repo_groups,class_="medium")}
${h.select('group_parent_id', request.GET.get('parent_group'),c.repo_groups,class_="medium")}
% if c.personal_repo_group:
<a class="btn" href="#" id="select_my_group" data-personal-group-id="${c.personal_repo_group.group_id}">
${_('Select my personal group ({})').format(c.personal_repo_group.group_name)}
</a>
% endif
</div>
</div>
@ -106,6 +111,12 @@
setCopyPermsOption(e.val)
});
$('#group_name').focus();
$('#select_my_group').on('click', function(e){
e.preventDefault();
$("#group_parent_id").val($(this).data('personalGroupId')).trigger("change");
})
})
</script>
</%def>

View file

@ -46,7 +46,7 @@ ${h.secure_form(h.route_path('repo_create'), request=request)}
${h.select('repo_group',request.GET.get('parent_group'),c.repo_groups,class_="medium")}
% if c.personal_repo_group:
<a class="btn" href="#" id="select_my_group" data-personal-group-id="${c.personal_repo_group.group_id}">
${_('Select my personal group (%(repo_group_name)s)') % {'repo_group_name': c.personal_repo_group.group_name}}
${_('Select my personal group ({})').format(c.personal_repo_group.group_name)}
</a>
% endif
<span class="help-block">${_('Optionally select a group to put this repository into.')}</span>