diff --git a/rhodecode/model/forms.py b/rhodecode/model/forms.py --- a/rhodecode/model/forms.py +++ b/rhodecode/model/forms.py @@ -250,7 +250,7 @@ def ValidRepoName(edit, old_data): gr = Group.get(value.get('repo_group')) group_path = gr.full_path # value needs to be aware of group name in order to check - # db key This is an actuall just the name to store in the + # db key This is an actual just the name to store in the # database repo_name_full = group_path + Group.url_sep() + repo_name else: @@ -259,25 +259,32 @@ def ValidRepoName(edit, old_data): value['repo_name_full'] = repo_name_full - if old_data.get('repo_name') != repo_name_full or not edit: + rename = old_data.get('repo_name') != repo_name_full + create = not edit + if rename or create: if group_path != '': if RepoModel().get_by_repo_name(repo_name_full,): e_dict = {'repo_name':_('This repository already ' - 'exists in group "%s"') % + 'exists in a group "%s"') % gr.group_name} raise formencode.Invalid('', value, state, error_dict=e_dict) + elif Group.get_by_group_name(repo_name_full): + e_dict = {'repo_name':_('There is a group with this' + ' name already "%s"') % + repo_name_full} + raise formencode.Invalid('', value, state, + error_dict=e_dict) - else: - if RepoModel().get_by_repo_name(repo_name_full): + elif RepoModel().get_by_repo_name(repo_name_full): e_dict = {'repo_name':_('This repository ' 'already exists')} raise formencode.Invalid('', value, state, error_dict=e_dict) + return value - return _ValidRepoName def ValidForkName():