fields: add support for prefilling with datetime.time() values (#22969)

This commit is contained in:
Frédéric Péters 2018-04-04 10:11:45 +02:00
parent 128ac6b5c2
commit 1745e14e0a
2 changed files with 10 additions and 0 deletions

View File

@ -97,3 +97,9 @@ def test_prefill_formula_date_value():
field.prefill = {'type': 'formula', 'value': 'utils.add_days("2016-01-01", 10)'}
assert field.get_prefill_value() == ('2016-01-11', False)
def test_prefill_formula_time_value():
pub.substitutions.get_context_variables = lambda: {}
field = fields.Field()
field.prefill = {'type': 'formula', 'value': 'utils.make_datetime("2018-04-04 10:05").time()'}
assert field.get_prefill_value() == ('10:05 a.m.', False)

View File

@ -27,6 +27,8 @@ from HTMLParser import HTMLParser
from quixote import get_request, get_publisher
from quixote.html import htmltext, TemplateIO
from django.utils.formats import date_format as django_date_format
from qommon import _
from qommon import evalutils
from qommon.form import *
@ -309,6 +311,8 @@ class Field(object):
ret = eval(formula,
get_publisher().get_global_eval_dict(),
get_publisher().substitutions.get_context_variables())
if isinstance(ret, datetime.time):
ret = misc.site_encode(django_date_format(ret, format='TIME_FORMAT'))
if isinstance(ret, datetime.date):
ret = ret.strftime(date_format())
if ret: