admin: don't refer to slug widget if it has not been added (#37102)

This commit is contained in:
Frédéric Péters 2019-10-21 16:39:01 +02:00
parent cd216c1ff4
commit e7887d2b0f
2 changed files with 8 additions and 7 deletions

View File

@ -4954,13 +4954,15 @@ def test_data_sources_in_use_edit_slug(pub):
app = login(get_app(pub))
resp = app.get('/backoffice/settings/data-sources/1/')
resp = resp.click(href='edit')
assert 'form_slug' not in resp.text
assert 'form_slug' not in resp.form.fields
resp = resp.form.submit('submit')
formdef.fields = []
formdef.store()
resp = app.get('/backoffice/settings/data-sources/1/')
resp = resp.click(href='edit')
assert 'form_slug' in resp.text
resp = resp.form.submit('submit')
def test_wscalls_new(pub):
create_superuser(pub)

View File

@ -96,18 +96,17 @@ class NamedDataSourceUI(object):
def submit_form(self, form):
name = form.get_widget('name').parse()
if self.datasource.slug:
slug_widget = form.get_widget('slug')
if slug_widget:
slug = form.get_widget('slug').parse()
else:
slug = None
for nds in NamedDataSource.select():
if nds.id == self.datasource.id:
continue
if name == nds.name:
form.get_widget('name').set_error(_('This name is already used.'))
if slug == nds.slug:
form.get_widget('slug').set_error(_('This value is already used.'))
if slug_widget and slug == nds.slug:
slug_widget.set_error(_('This value is already used.'))
if form.has_errors():
raise ValueError()
@ -117,7 +116,7 @@ class NamedDataSourceUI(object):
self.datasource.cache_duration = form.get_widget('cache_duration').parse()
self.datasource.query_parameter = form.get_widget('query_parameter').parse()
self.datasource.id_parameter = form.get_widget('id_parameter').parse()
if self.datasource.slug:
if slug_widget:
self.datasource.slug = slug
self.datasource.store()