Commit 7a5b64d5 authored by Jérome Perrin's avatar Jérome Perrin

Support timezone conversion on date fields

parent a96aa643
......@@ -1368,7 +1368,8 @@ class DateTimeWidget(Widget):
default_timezone = fields.ListField('default_timezone',
title="Default Timezone",
description=(
"The default timezone display when inputing a new date"),
"The default timezone display when inputing a new date."
"Upon display, the dates are converted to this timezone"),
default="",
items=all_timezones,
size=1)
......@@ -1424,6 +1425,7 @@ class DateTimeWidget(Widget):
This only describes the field format settings, not the actual
format of provided value.
query : Passthrough of given value.
timezone: the timezone to consider.
"""
if not value:
return None
......@@ -1434,11 +1436,13 @@ class DateTimeWidget(Widget):
value = value.encode(field.get_form_encoding())
return {'query': value,
'format': field.get_value('date_separator').join(input_order),
'timezone': field.get_value('default_timezone'),
'type': 'date'}
def render(self, field, key, value, REQUEST, render_prefix=None):
use_ampm = field.get_value('ampm_time_style')
use_timezone = field.get_value('timezone_style')
timezone = field.get_value('default_timezone')
# FIXME: backwards compatibility hack:
if not hasattr(field, 'sub_form'):
from StandardFields import create_datetime_text_sub_form
......@@ -1461,6 +1465,8 @@ class DateTimeWidget(Widget):
ampm = None
timezone = field.get_value("default_timezone")
if isinstance(value, DateTime):
if timezone:
value = value.toZone(timezone)
year = "%04d" % value.year()
month = "%02d" % value.month()
day = "%02d" % value.day()
......@@ -1525,6 +1531,9 @@ class DateTimeWidget(Widget):
use_ampm = field.get_value('ampm_time_style')
use_timezone = field.get_value('timezone_style')
default_timezone = field.get_value('default_timezone')
if default_timezone:
value = value.toZone(default_timezone)
year = "%04d" % value.year()
month = "%02d" % value.month()
......
......@@ -59,7 +59,10 @@ def castDate(value, change_timezone=True):
# input.
assert value['type'] == 'date'
format = value.get('format')
timezone = value.get('timezone')
value = value['query']
if timezone:
value = "%s %s" % (value, timezone)
if format == '%m/%d/%Y':
date_kw.pop('datefmt')
if isinstance(value, DateTime):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment