From e62e18591d176f84f3d7c01e3a4069b32fa3a32c Mon Sep 17 00:00:00 2001 From: Thomas NOEL Date: Tue, 24 Apr 2018 17:09:34 +0200 Subject: [PATCH] add _rawdate and _rawdatetime subst variables for date fields (#9876) --- tests/test_formdata.py | 21 ++++++++++++++++++++- wcs/formdata.py | 5 ++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/tests/test_formdata.py b/tests/test_formdata.py index 581b6fe2..6a13cbaf 100644 --- a/tests/test_formdata.py +++ b/tests/test_formdata.py @@ -1,4 +1,5 @@ import collections +import datetime import pytest import sys import shutil @@ -226,7 +227,7 @@ def test_password_field(pub): def test_date_field(pub): formdef.data_class().wipe() - formdef.fields = [fields.DateField(id='0', label='date')] + formdef.fields = [fields.DateField(id='0', label='date', varname='vardate')] formdef.store() formdata = formdef.data_class()() value = time.strptime('2015-05-12', '%Y-%m-%d') @@ -237,10 +238,28 @@ def test_date_field(pub): assert formdata2.data == {'0': value} assert formdata2.get_substitution_variables()['form_field_date'] == '2015-05-12' + assert formdata2.get_substitution_variables()['form_var_vardate'] == '2015-05-12' + assert formdata2.get_substitution_variables()['form_var_vardate_raw'] == value + assert formdata2.get_substitution_variables()['form_var_vardate_rawdate'] == datetime.date(2015, 5, 12) + assert formdata2.get_substitution_variables()['form_var_vardate_rawdatetime'] == datetime.datetime(2015, 5, 12, 0, 0) pub.cfg['language'] = {'language': 'fr'} assert formdata2.get_substitution_variables()['form_field_date'] == '12/05/2015' + assert formdata2.get_substitution_variables()['form_var_vardate'] == '12/05/2015' + assert formdata2.get_substitution_variables()['form_var_vardate_raw'] == value + assert formdata2.get_substitution_variables()['form_var_vardate_rawdate'] == datetime.date(2015, 5, 12) + assert formdata2.get_substitution_variables()['form_var_vardate_rawdatetime'] == datetime.datetime(2015, 5, 12, 0, 0) pub.cfg['language'] = {'language': 'en'} + formdata.data = {'0': None} + formdata.store() + formdata2 = formdata.get(formdata.id) + assert formdata2.data == {'0': None} + assert formdata2.get_substitution_variables()['form_field_date'] == '' + assert formdata2.get_substitution_variables()['form_var_vardate'] == '' + assert 'form_var_vardate_raw' not in formdata2.get_substitution_variables() + assert 'form_var_vardate_rawdate' not in formdata2.get_substitution_variables() + assert 'form_var_vardate_rawdatetime' not in formdata2.get_substitution_variables() + def test_clean_drafts(pub): formdef = FormDef() formdef.name = 'foo' diff --git a/wcs/formdata.py b/wcs/formdata.py index 5d84da9c..64b13900 100644 --- a/wcs/formdata.py +++ b/wcs/formdata.py @@ -28,7 +28,7 @@ from quixote.http_request import Upload from qommon import _ from qommon.storage import StorableObject, Intersects, Contains import qommon.misc -from qommon.evalutils import make_datetime +from qommon.evalutils import make_datetime, make_date from qommon.substitution import Substitutions, invalidate_substitution_cache from qommon.template import Template @@ -77,6 +77,9 @@ def get_dict_with_varnames(fields, data, formdata=None, varnames_only=False): formdata.get_url(), field.id) elif raw_value is not None: new_data['var_%s_raw' % field.varname] = raw_value + if field.key == 'date': + new_data['var_%s_rawdate' % field.varname] = make_date(raw_value) + new_data['var_%s_rawdatetime' % field.varname] = make_datetime(raw_value) if field.store_structured_value and data is not None: structured_value = data.get('%s_structured' % field.id) if type(structured_value) is dict: -- 2.17.0