From 357cb20d7dd1e5b84b90fd3a857a91701ea5b871 Mon Sep 17 00:00:00 2001 From: Thomas NOEL Date: Tue, 26 Jul 2022 17:31:32 +0200 Subject: [PATCH] fields: allow basic substitutions variables on django validation (#67734) --- tests/test_widgets.py | 7 +++++++ wcs/qommon/form.py | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/test_widgets.py b/tests/test_widgets.py index 1a5bacde7..8612b979b 100644 --- a/tests/test_widgets.py +++ b/tests/test_widgets.py @@ -1159,6 +1159,13 @@ def test_wcsextrastringwidget_django_validation(): assert widget.has_error() assert widget.error == 'Foo Bar Custom Error' + pub.substitutions.feed(pub) + fakefield.validation = {'type': 'django', 'value': 'value|decimal == today.year'} + widget = WcsExtraStringWidget('test', value='foo', required=False) + widget.field = fakefield + mock_form_submission(req, widget, {'test': str(datetime.date.today().year)}) + assert not widget.has_error() + def test_widgetdict_widget(): widget = WidgetDict('test', value={'a': None, 'b': None, 'c': None}) diff --git a/wcs/qommon/form.py b/wcs/qommon/form.py index 8a9402c01..5eb6e5878 100644 --- a/wcs/qommon/form.py +++ b/wcs/qommon/form.py @@ -1116,7 +1116,9 @@ class ValidationCondition(Condition): self.evaluated_value = value def get_data(self): - return {'value': self.evaluated_value} + data = get_publisher().get_substitution_variables() + data['value'] = self.evaluated_value + return data class ValidationWidget(CompositeWidget):