applications: force parameters name to be slug with underscores (#79674)
gitea/hobo/pipeline/head This commit looks good Details

This commit is contained in:
Frédéric Péters 2023-07-15 10:27:16 +02:00
parent 2ba5fa23f2
commit d9d6bb4e1d
2 changed files with 20 additions and 0 deletions

View File

@ -486,6 +486,7 @@ class AddParameterView(CreateView):
def form_valid(self, form):
form.instance.application = self.application
form.instance.name = slugify(form.cleaned_data['name']).replace('-', '_')
return super().form_valid(form)
def get_success_url(self):
@ -500,6 +501,10 @@ class EditParameterView(UpdateView):
model = Parameter
fields = ['label', 'name', 'default_value']
def form_valid(self, form):
form.instance.name = slugify(form.cleaned_data['name']).replace('-', '_')
return super().form_valid(form)
def get_queryset(self):
return (
super()

View File

@ -1382,6 +1382,21 @@ def test_create_application_parameters(app, admin_user, settings):
resp = resp.form.submit().follow()
assert not Parameter.objects.filter(name='app_foo').exists()
# check name is slugified
resp = resp.click('add')
resp.form['label'] = 'Foo'
resp.form['name'] = 'app-foo bar'
resp.form['default_value'] = 'xxx'
resp = resp.form.submit().follow()
assert Parameter.objects.all().count() == 1
assert Parameter.objects.filter(name='app_foo_bar').exists()
resp = resp.click(href=resp.pyquery('.app-parameters--list li a:not(.delete)').attr.href)
resp.form['name'] = 'app-foo bar'
resp = resp.form.submit().follow()
assert Parameter.objects.all().count() == 1
assert Parameter.objects.filter(name='app_foo_bar').exists()
@pytest.fixture
def app_bundle_parameters():