0001-backoffice-add-validity-check-for-datasource-URLs-55.patch
tests/admin_pages/test_form.py | ||
---|---|---|
2357 | 2357 |
assert FormDef.get(1).fields[0].items == ['XXX'] |
2358 | 2358 | |
2359 | 2359 | |
2360 |
def test_form_edit_items_datasource(pub): |
|
2361 |
create_superuser(pub) |
|
2362 |
create_role(pub) |
|
2363 | ||
2364 |
FormDef.wipe() |
|
2365 |
formdef = FormDef() |
|
2366 |
formdef.name = 'form title' |
|
2367 |
formdef.fields = [fields.ItemsField(id='1', label='1st field', type='items')] |
|
2368 |
formdef.store() |
|
2369 | ||
2370 |
app = login(get_app(pub)) |
|
2371 |
resp = app.get('/backoffice/forms/1/') |
|
2372 |
resp = resp.click(href='fields/') |
|
2373 |
assert '1st field' in resp.text |
|
2374 | ||
2375 |
resp = app.get('/backoffice/forms/1/fields/1/') |
|
2376 |
resp.form['data_mode'].value = 'data-source' |
|
2377 |
resp.form['data_source$type'].value = 'json' |
|
2378 |
resp.form['data_source$value'].value = 'random string' |
|
2379 |
resp = resp.form.submit('submit') |
|
2380 |
assert 'Value must be a full URL.' in resp.text |
|
2381 |
resp.form['data_source$value'].value = 'http://whatever' |
|
2382 |
resp = resp.form.submit('submit').follow() |
|
2383 |
assert FormDef.get(1).fields[0].data_source == {'type': 'json', 'value': 'http://whatever'} |
|
2384 | ||
2385 |
# check template strings are ok |
|
2386 |
resp = app.get('/backoffice/forms/1/fields/1/') |
|
2387 |
resp.form['data_mode'].value = 'data-source' |
|
2388 |
resp.form['data_source$type'].value = 'json' |
|
2389 |
resp.form['data_source$value'].value = '{{url}}' |
|
2390 |
resp = resp.form.submit('submit').follow() |
|
2391 |
assert FormDef.get(1).fields[0].data_source == {'type': 'json', 'value': '{{url}}'} |
|
2392 | ||
2393 | ||
2360 | 2394 |
def test_form_edit_page_field(pub): |
2361 | 2395 |
create_superuser(pub) |
2362 | 2396 |
create_role(pub) |
wcs/data_sources.py | ||
---|---|---|
179 | 179 |
value = self.get(name) |
180 | 180 |
if value: |
181 | 181 |
values[name] = value |
182 | ||
183 |
if values.get('type') in ('json', 'jsonp', 'geojson'): |
|
184 |
url = values.get('value') or '' |
|
185 |
if url and not Template.is_template_string(url): |
|
186 |
parsed = urllib.parse.urlparse(url) |
|
187 |
if not (parsed.scheme and parsed.netloc): |
|
188 |
self.error = _('Value must be a full URL.') |
|
189 | ||
182 | 190 |
if values.get('type', '') in ('none', ''): |
183 | 191 |
values = None |
184 | 192 |
self.value = values or None |
185 |
- |