- Timestamp:
- 18 Apr 2012, 12:46:52 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.kofa/trunk/src/waeup/kofa/widgets/datetimewidget.py
r8198 r8207 20 20 import datetime 21 21 import pytz 22 from zope.component import queryUtility 23 from zope.datetime import parseDatetimetz 24 from zope.datetime import DateTimeError 25 from zope.formlib.i18n import _ 26 from zope.formlib.interfaces import ConversionError 22 27 from zope.formlib.textwidgets import DatetimeWidget 28 from waeup.kofa.utils.helpers import to_timezone 29 from waeup.kofa.interfaces import IKofaUtils 30 31 class _DummyUtils(object): 32 tzinfo = pytz.utc 33 34 # A fallback, if no IKofaUtils can be found 35 _DUMMY_UTILS = _DummyUtils() 23 36 24 37 class PytzDatetimeWidget(DatetimeWidget): … … 38 51 go into the DB. 39 52 53 For datetimes without any timezone set, we interpret the input to 54 be meant as local app-time. I.e. if application TZ is 55 ``Africa/Lagos``, we assume that a string like '2012-02-01 12:13' 56 (apparently not providing TZ info) was meant as 12:13 h Lagos 57 time. 58 40 59 From zope.datetime, however, we save the parser abilities to 41 60 interpret even bizarre entered data as some datetime. … … 47 66 48 67 """ 49 value = super(PytzDatetimeWidget, self)._toFieldValue(string) 68 if string == self._missing: 69 return self.context.missing_value 70 else: 71 try: 72 # Different to original implementation we do not 73 # automatically request local server time if no TZ was 74 # set in `string`. In this case we want a datetime with 75 # tzinfo set to `None` instead. 76 value = parseDatetimetz(string, local=False) 77 except (DateTimeError, ValueError, IndexError), v: 78 raise ConversionError(_("Invalid datetime data"), v) 79 50 80 if not isinstance(value, datetime.datetime): 51 81 return value 52 82 if value.tzinfo is None: 53 return pytz.utc.localize(value) 83 utils = queryUtility(IKofaUtils, default=_DUMMY_UTILS) 84 value = utils.tzinfo.localize(value) 54 85 return value.astimezone(pytz.utc)
Note: See TracChangeset for help on using the changeset viewer.