evalutils: handle lazy dates in make_date and make_datetime (#29406)
This commit is contained in:
parent
853c0e8e2b
commit
4daf8310ca
|
@ -1082,6 +1082,34 @@ def test_lazy_formdata_fields(pub):
|
|||
tmpl = Template('{% if form_var_item != "Foo" %}HELLO{% endif %}')
|
||||
assert tmpl.render(context) == ''
|
||||
|
||||
def test_date_conditions_python(pub, variable_test_data):
|
||||
for pycondition in (
|
||||
'utils.age_in_days(form_var_datefield, form_var_datefield2) == 31',
|
||||
'utils.age_in_days(form_var_datefield, form_var_datefield) == 0',
|
||||
'utils.age_in_days(form_var_datefield, form_var_datestring) == 0',
|
||||
'utils.age_in_days(utils.add_days(today, -5)) == 5',
|
||||
'date(form_var_datefield) < today',
|
||||
'utils.add_days(form_var_datefield, 36500) > today',
|
||||
'date(form_var_datefield) + days(36500) > today',
|
||||
'utils.add_days(form_var_datefield, 31) == date(form_var_datefield2)',
|
||||
'date(form_var_datefield) + days(31) == date(form_var_datefield2)',
|
||||
'utils.add_days(form_var_datefield, 32) > date(form_var_datefield2)',
|
||||
'date(form_var_datefield) + days(32) > date(form_var_datefield2)',
|
||||
'utils.add_days(form_var_datefield, 30) < date(form_var_datefield2)',
|
||||
'date(form_var_datefield) + days(30) < date(form_var_datefield2)',
|
||||
'isinstance(now, datetime.datetime)',
|
||||
'isinstance(today, datetime.date)',
|
||||
'utils.age_in_days(today) == 0',
|
||||
'utils.age_in_days(now) == 0',
|
||||
'utils.age_in_years(today) == 0',
|
||||
'utils.age_in_years(now) == 0',
|
||||
'utils.age_in_years_and_months(today) == (0, 0)',
|
||||
'utils.age_in_years_and_months(now) == (0, 0)',
|
||||
'utils.age_in_years_and_months(form_var_datefield, form_var_datefield2) == (0, 1)',
|
||||
):
|
||||
condition = Condition({'type': 'python', 'value': pycondition})
|
||||
assert condition.evaluate() is True
|
||||
|
||||
def test_form_digest_date(pub):
|
||||
formdef = FormDef()
|
||||
formdef.name = 'foobar'
|
||||
|
|
|
@ -34,7 +34,7 @@ def make_date(date_var):
|
|||
if isinstance(date_var, datetime.datetime):
|
||||
return date_var.date()
|
||||
if isinstance(date_var, datetime.date):
|
||||
return date_var
|
||||
return date_var.replace() # use replace to un-lazy
|
||||
if isinstance(date_var, time.struct_time) or (
|
||||
isinstance(date_var, tuple) and len(date_var) == 9):
|
||||
return datetime.date(*date_var[:3])
|
||||
|
@ -47,7 +47,7 @@ def make_date(date_var):
|
|||
def make_datetime(datetime_var):
|
||||
'''Extract a date from a datetime, a date, a struct_time or a string'''
|
||||
if isinstance(datetime_var, datetime.datetime):
|
||||
return datetime_var
|
||||
return datetime_var.replace() # use replace to un-lazy
|
||||
if isinstance(datetime_var, datetime.date):
|
||||
return datetime.datetime(year=datetime_var.year, month=datetime_var.month,
|
||||
day=datetime_var.day)
|
||||
|
|
Loading…
Reference in New Issue