0001-datasources-avoid-raising-on-lost-datasource-18431.patch
tests/test_form_pages.py | ||
---|---|---|
4238 | 4238 |
resp = resp.forms[0].submit('submit') |
4239 | 4239 |
assert 'Check values then click submit.' in resp.body |
4240 | 4240 | |
4241 |
def test_unknown_datasource(pub): |
|
4242 |
formdef = create_formdef() |
|
4243 |
formdef.fields = [ |
|
4244 |
fields.StringField(id='1', label='string', |
|
4245 |
varname='string', required=False, data_source={'type': 'foobar'}), |
|
4246 |
fields.ItemField(id='2', label='item', |
|
4247 |
varname='item', required=False, data_source={'type': 'foobar'}), |
|
4248 |
fields.ItemsField(id='3', label='items', |
|
4249 |
varname='items', required=False, data_source={'type': 'foobar'}), |
|
4250 |
] |
|
4251 | ||
4252 |
formdef.store() |
|
4253 |
data_class = formdef.data_class() |
|
4254 |
data_class.wipe() |
|
4255 |
resp = get_app(pub).get('/test/') |
|
4256 |
formdef.data_class().wipe() |
|
4257 |
resp = resp.forms[0].submit('submit') # should go straight to validation |
|
4258 |
assert 'Check values then click submit.' in resp.body |
|
4259 | ||
4241 | 4260 |
def test_form_items_datasource(pub): |
4242 | 4261 |
formdef = create_formdef() |
4243 | 4262 |
formdef.fields = [fields.ItemsField(id='1', label='items', |
wcs/data_sources.py | ||
---|---|---|
249 | 249 |
return NamedDataSource.get_by_slug(ds_type) |
250 | 250 | |
251 | 251 | |
252 |
class StubNamedDataSource(object): |
|
253 |
type = 'formula' |
|
254 |
data_source = {'type': 'formula', 'value': []} |
|
255 |
cache_duration = None |
|
256 | ||
257 | ||
252 | 258 |
class NamedDataSource(XmlStorableObject): |
253 | 259 |
_names = 'datasources' |
254 | 260 |
_xml_tagname = 'datasources' |
... | ... | |
330 | 336 |
objects = [x for x in cls.select() if x.slug == slug] |
331 | 337 |
if objects: |
332 | 338 |
return objects[0] |
333 |
raise KeyError("data source '%s' does not exist" % slug) |
|
339 |
get_logger().warn("data source '%s' does not exist" % slug) |
|
340 |
return StubNamedDataSource() |
|
334 | 341 | |
335 | 342 |
def get_json_query_url(self): |
336 | 343 |
url = self.data_source.get('value').strip() |
wcs/formdef.py | ||
---|---|---|
1010 | 1010 |
for field in formdef.fields: |
1011 | 1011 |
data_source = getattr(field, 'data_source', None) |
1012 | 1012 |
if data_source: |
1013 |
try: |
|
1014 |
data_sources.get_real(data_source) |
|
1015 |
except KeyError: |
|
1013 |
if isinstance(data_sources.get_object(data_source), |
|
1014 |
data_sources.StubNamedDataSource): |
|
1016 | 1015 |
unknown_datasources.add(data_source.get('type')) |
1017 | 1016 |
if unknown_datasources: |
1018 | 1017 |
raise FormdefImportError(N_('Unknown datasources'), |
1019 |
- |