0001-backoffice-check-slug-for-uniqueness-65526.patch
tests/admin_pages/test_block.py | ||
---|---|---|
102 | 102 |
resp = resp.follow() |
103 | 103 | |
104 | 104 | |
105 |
def test_block_options_slug(pub): |
|
106 |
create_superuser(pub) |
|
107 |
BlockDef.wipe() |
|
108 |
block = BlockDef() |
|
109 |
block.name = 'foo' |
|
110 |
block.fields = [] |
|
111 |
block.store() |
|
112 | ||
113 |
block2 = BlockDef() |
|
114 |
block2.name = 'bar' |
|
115 |
block2.fields = [] |
|
116 |
block2.store() |
|
117 | ||
118 |
app = login(get_app(pub)) |
|
119 |
resp = app.get('/backoffice/forms/blocks/%s/settings' % block.id) |
|
120 |
resp.form['slug'] = 'bar' |
|
121 |
resp = resp.form.submit('submit') |
|
122 |
assert 'This identifier is already used.' in resp.text |
|
123 | ||
124 |
resp = app.get('/backoffice/forms/blocks/%s/settings' % block.id) |
|
125 |
resp.form['slug'] = 'foo' |
|
126 |
resp = resp.form.submit('submit').follow() |
|
127 | ||
128 |
resp = app.get('/backoffice/forms/blocks/%s/settings' % block.id) |
|
129 |
resp.form['slug'] = 'foo2' |
|
130 |
resp = resp.form.submit('submit').follow() |
|
131 |
block.refresh_from_storage() |
|
132 |
assert block.slug == 'foo2' |
|
133 | ||
134 | ||
105 | 135 |
def test_block_options_digest_template(pub): |
106 | 136 |
create_superuser(pub) |
107 | 137 |
BlockDef.wipe() |
wcs/admin/blocks.py | ||
---|---|---|
184 | 184 |
self.objectdef.name = form.get_widget('name').parse() |
185 | 185 |
if form.get_widget('slug'): |
186 | 186 |
self.objectdef.slug = form.get_widget('slug').parse() |
187 |
existing_slug = BlockDef.get_by_slug(self.objectdef.slug) |
|
188 |
if existing_slug and existing_slug.id != self.objectdef.id: |
|
189 |
form.get_widget('slug').set_error(_('This identifier is already used.')) |
|
187 | 190 |
if form.get_widget('category_id'): |
188 | 191 |
self.objectdef.category_id = form.get_widget('category_id').parse() |
189 | 192 |
widget_template = form.get_widget('digest_template') |
... | ... | |
191 | 194 |
widget_template.set_error( |
192 | 195 |
_('Wrong variable "form_var_…" detected. Please replace it by "block_var_…".') |
193 | 196 |
) |
194 |
else:
|
|
197 |
if not form.has_errors():
|
|
195 | 198 |
self.objectdef.digest_template = widget_template.parse() |
196 | 199 |
self.objectdef.store() |
197 | 200 |
return redirect('.') |
198 |
- |