formdata: don't fail on digest template generation (#56764)
gitea-wip/wcs/pipeline/head Build started...
Details
gitea-wip/wcs/pipeline/head Build started...
Details
This commit is contained in:
parent
652a2c7a08
commit
d2c6f15f06
|
@ -2412,7 +2412,7 @@ def test_form_digest_date(pub):
|
|||
formdata.store()
|
||||
assert formdef.data_class().get(formdata.id).digests['default'] == 'plop plop'
|
||||
|
||||
# check there's no crash when an invaliad variable is given
|
||||
# check there's no crash when an invalid variable is given
|
||||
formdef.digest_templates = {'default': 'plop {{ blah|date:"Y" }} plop'}
|
||||
formdef.store()
|
||||
formdata = formdef.data_class()()
|
||||
|
@ -2421,6 +2421,44 @@ def test_form_digest_date(pub):
|
|||
assert formdef.data_class().get(formdata.id).digests['default'] == 'plop plop'
|
||||
|
||||
|
||||
def test_form_digest_error(pub):
|
||||
if pub.is_using_postgresql():
|
||||
pub.loggederror_class.wipe()
|
||||
|
||||
formdef = FormDef()
|
||||
formdef.name = 'foobar'
|
||||
formdef.url_name = 'foobar'
|
||||
formdef.fields = [fields.DateField(id='0', label='date', varname='date')]
|
||||
formdef.digest_templates = {'default': 'plop {{ form_var_date|list }} plop'}
|
||||
formdef.store()
|
||||
|
||||
formdata = formdef.data_class()()
|
||||
formdata.store()
|
||||
assert formdef.data_class().get(formdata.id).digests['default'] == 'ERROR'
|
||||
|
||||
if pub.is_using_postgresql():
|
||||
assert pub.loggederror_class.count() == 1
|
||||
logged_error = pub.loggederror_class.select()[0]
|
||||
assert logged_error.summary == 'Could not render digest (default)'
|
||||
assert logged_error.formdata_id == str(formdata.id)
|
||||
|
||||
formdef.digest_templates = {
|
||||
'default': 'plop plop',
|
||||
'custom-view:foobar': 'plop {{ form_var_date|list }} plop',
|
||||
}
|
||||
formdef.store()
|
||||
|
||||
formdata = formdef.data_class()()
|
||||
formdata.store()
|
||||
assert formdef.data_class().get(formdata.id).digests['custom-view:foobar'] == 'ERROR'
|
||||
|
||||
if pub.is_using_postgresql():
|
||||
assert pub.loggederror_class.count() == 2
|
||||
logged_error = pub.loggederror_class.select()[1]
|
||||
assert logged_error.summary == 'Could not render digest (custom view "foobar")'
|
||||
assert logged_error.formdata_id == str(formdata.id)
|
||||
|
||||
|
||||
def test_lazy_formdata_decimal_filter(pub):
|
||||
formdef = FormDef()
|
||||
formdef.name = 'foobar'
|
||||
|
|
|
@ -466,7 +466,22 @@ class FormData(StorableObject):
|
|||
if template is None:
|
||||
new_value = None
|
||||
else:
|
||||
new_value = Template(template, autoescape=False).render(context)
|
||||
try:
|
||||
new_value = Template(template, autoescape=False).render(context)
|
||||
except Exception as e:
|
||||
# can't fail on id_display
|
||||
if attribute == 'template:default':
|
||||
summary = _('Could not render digest (default)')
|
||||
else:
|
||||
summary = _('Could not render digest (custom view "%s")') % attribute.replace(
|
||||
'template:custom-view:', ''
|
||||
)
|
||||
get_publisher().record_error(
|
||||
summary,
|
||||
formdata=self,
|
||||
exception=e,
|
||||
)
|
||||
new_value = 'ERROR'
|
||||
if attribute.startswith('template:'):
|
||||
key = attribute[9:]
|
||||
if new_value != (self.digests or {}).get(key):
|
||||
|
|
Loading…
Reference in New Issue