misc: report an error when |objects is given an invalid card/form slug (#55415)
gitea/wcs/pipeline/head Build queued...
Details
gitea/wcs/pipeline/head Build queued...
Details
This commit is contained in:
parent
6ff2c8c399
commit
76377600c1
|
@ -922,7 +922,7 @@ def test_inspect_page_missing_carddef_error(pub):
|
|||
resp.form['template'] = '{{ cards|objects:"XXX" }}'
|
||||
resp = resp.form.submit()
|
||||
assert 'Failed to evaluate template' in resp.text
|
||||
assert ' such card model: XXX' in resp.text
|
||||
assert '|objects with invalid reference (\'XXX\')' in resp.text
|
||||
|
||||
|
||||
def test_inspect_page_draft_formdata(pub, local_user):
|
||||
|
|
|
@ -727,17 +727,13 @@ def test_computed_field_with_bad_objects_filter_in_prefill(pub):
|
|||
|
||||
formdef.fields[0].value_template = '{{ cards|objects:"unknown"|first|get:"form_number_raw"|default:"" }}'
|
||||
formdef.store()
|
||||
|
||||
pub.loggederror_class.wipe()
|
||||
resp = get_app(pub).get('/test/')
|
||||
assert 'XY' in resp.text
|
||||
assert pub.loggederror_class.count() == 2
|
||||
assert pub.loggederror_class.count() == 1
|
||||
logged_error = pub.loggederror_class.select(order_by='id')[0]
|
||||
assert logged_error.summary == 'wcs.carddef.CardDefDoesNotExist: unknown'
|
||||
assert logged_error.formdef_id == formdef.id
|
||||
logged_error = pub.loggederror_class.select(order_by='id')[1]
|
||||
assert (
|
||||
logged_error.summary
|
||||
== 'Invalid value "{{ cards|objects:"unknown"|first|get:"form_number_raw"|default:"" }}" for field "computed"'
|
||||
)
|
||||
assert logged_error.summary == '|objects with invalid reference (\'unknown\')'
|
||||
assert logged_error.formdef_id == formdef.id
|
||||
|
||||
|
||||
|
|
|
@ -1350,6 +1350,14 @@ def test_objects_filter(pub):
|
|||
logged_error = pub.loggederror_class.select()[0]
|
||||
assert logged_error.summary == '|objects with invalid source (\'\')'
|
||||
|
||||
# called with missing source
|
||||
pub.loggederror_class.wipe()
|
||||
tmpl = Template('{{forms|objects:"bla bla bla"|count}}')
|
||||
assert tmpl.render(context) == '0'
|
||||
assert pub.loggederror_class.count() == 1
|
||||
logged_error = pub.loggederror_class.select()[0]
|
||||
assert logged_error.summary == '|objects with invalid reference (\'bla bla bla\')'
|
||||
|
||||
|
||||
def test_lazy_formdata_queryset_distance(pub, variable_test_data):
|
||||
# Form
|
||||
|
|
|
@ -73,8 +73,11 @@ def test_prefill_string_carddef():
|
|||
field.prefill = {'type': 'string', 'value': '{{cards|objects:"foo"|first|get:"foo"}}'}
|
||||
assert field.get_prefill_value() == ('hello world', False)
|
||||
|
||||
pub.loggederror_class.wipe()
|
||||
field.prefill = {'type': 'string', 'value': '{{cards|objects:"unknown"|first|get:"foo"}}'}
|
||||
assert field.get_prefill_value() == ('{{cards|objects:"unknown"|first|get:"foo"}}', False)
|
||||
assert field.get_prefill_value() == ('None', False)
|
||||
assert pub.loggederror_class.count() == 1
|
||||
assert pub.loggederror_class.select()[0].summary == '|objects with invalid reference (\'unknown\')'
|
||||
|
||||
|
||||
def test_prefill_user_email(user):
|
||||
|
|
|
@ -814,12 +814,16 @@ def done(queryset):
|
|||
|
||||
@register.filter
|
||||
def objects(forms_source, slug):
|
||||
from wcs.variables import CardsSource, FormsSource
|
||||
from wcs.variables import CardsSource, FormDefDoesNotExist, FormsSource
|
||||
|
||||
if not isinstance(forms_source, (CardsSource, FormsSource)):
|
||||
get_publisher().record_error(_('|objects with invalid source (%r)') % forms_source)
|
||||
return None
|
||||
return getattr(forms_source, unlazy(slug)).objects
|
||||
try:
|
||||
return getattr(forms_source, unlazy(slug)).objects
|
||||
except FormDefDoesNotExist:
|
||||
get_publisher().record_error(_('|objects with invalid reference (%r)') % slug)
|
||||
return None
|
||||
|
||||
|
||||
@register_queryset_filter
|
||||
|
|
Loading…
Reference in New Issue