Improve auto-handling of "local" timestamps

for non-Rattail DBs where timestamps are local instead of UTC
This commit is contained in:
Lance Edgar 2020-09-02 11:30:02 -05:00
parent d2d632092b
commit 72177e8ab5
3 changed files with 27 additions and 5 deletions

View file

@ -340,7 +340,8 @@ class Form(object):
auto_disable_cancel = True
def __init__(self, fields=None, schema=None, request=None, mobile=False, readonly=False, readonly_fields=[],
model_instance=None, model_class=None, appstruct=UNSPECIFIED, nodes={}, enums={}, labels={}, renderers=None,
model_instance=None, model_class=None, appstruct=UNSPECIFIED, nodes={}, enums={}, labels={},
assume_local_times=False, renderers=None,
hidden={}, widgets={}, defaults={}, validators={}, required={}, helptext={}, focus_spec=None,
action_url=None, cancel_url=None, use_buefy=None, component='tailbone-form'):
@ -364,6 +365,7 @@ class Form(object):
self.nodes = nodes or {}
self.enums = enums or {}
self.labels = labels or {}
self.assume_local_times = assume_local_times
if renderers is None and self.model_class:
self.renderers = self.make_renderers()
else:
@ -430,7 +432,10 @@ class Form(object):
if len(prop.columns) == 1:
column = prop.columns[0]
if isinstance(column.type, sa.DateTime):
renderers[prop.key] = self.render_datetime
if self.assume_local_times:
renderers[prop.key] = self.render_datetime_local
else:
renderers[prop.key] = self.render_datetime
elif isinstance(column.type, sa.Boolean):
renderers[prop.key] = self.render_boolean