[Zope3-dev] zc.datetimewidget+UTC exception
Adam Groszer
adamg at fw.hu
Mon Jul 17 13:59:38 EDT 2006
Hello Gary,
Sorry for the confusion, just managed it, the last one should fail.
"""this method normalizes datetime instances by converting them to
utc, daylight saving times are also taken into account. This
method requires an adapter to get the tzinfo from the request.
>>> from zope import component, interface
>>> import pytz
>>> requestTZ = pytz.timezone('Europe/Vienna')
>>> from zope.interface.common.idatetime import ITZInfo
>>> from zope.publisher.interfaces.browser import IBrowserRequest
>>> from zope.publisher.browser import TestRequest
>>> @interface.implementer(ITZInfo)
... @component.adapter(IBrowserRequest)
... def tzinfo(request):
... return requestTZ
>>> component.provideAdapter(tzinfo)
>>> dt = datetime.datetime(2006,5,1,12)
>>> request = TestRequest()
The Vienna timezone has a 2 hour offset to utc at this date.
>>> normalize(request,dt)
datetime.datetime(2006, 5, 1, 10, 0, tzinfo=<UTC>)
At this date the timezone has only a one hour offset.
>>> dt = datetime.datetime(2006,2,1,12)
>>> normalize(request,dt)
datetime.datetime(2006, 2, 1, 11, 0, tzinfo=<UTC>)
Normalizing UTC to UTC should work also
>>> dt = datetime.datetime(2006,5,1,12,tzinfo=pytz.UTC)
>>> normalize(request,dt)
datetime.datetime(2006, 5, 1, 12, 0, tzinfo=<UTC>)
This way too UTC to UTC
>>> requestTZ = pytz.UTC
>>> dt = datetime.datetime(2006,5,1,12)
>>> normalize(request,dt)
datetime.datetime(2006, 5, 1, 12, 0, tzinfo=<UTC>)
"""
Monday, July 17, 2006, 7:55:02 PM, you wrote:
GP> On Jul 17, 2006, at 12:53 PM, Adam Groszer wrote:
>> Hi there,
>>
>> Anybody tried to use the above?
>> For me it raises
>>
>> Module zope.app.form.utility, line 348, in getWidgetsData
>> Module zope.app.form.browser.widget, line 295, in getInputValue
>> Module zc.datetimewidget.datetimewidget, line 123, in _toFieldValue
>> res = normalizeDateTime(res, self.request)
>> Module zc.datetimewidget.datetimewidget, line 48, in
>> normalizeDateTime
>> dt = zc.i18n.date.normalize(request, dt)
>> Module zc.i18n.date, line 74, in normalize
>> tzu = tzinfo.fromutc(dt).tzinfo
>> ValueError: fromutc: dt.tzinfo is not self
>>
>> Seems like that happens when in zc.i18n.date tzinfo == UTC
>>
>> def normalize(request, dt):
>> if dt.tzinfo is None:
>> tzinfo = ITZInfo(request)
>> else:
>> tzinfo = dt.tzinfo
>>
>> tzu = tzinfo.fromutc(dt).tzinfo
>>
>> Anyway normalizing an UTC datetime to UTC is useless?!?!?
>> So if nobody goes against I'll correct that.
GP> Hi Adam. I'm trying to follow, and having a bit of a hard time,
GP> perhaps because I'm trying to work too quickly. :-)
GP> I thought you meant that the following test of zc.i18n.date.normalize
GP> would fail:
GP> >>> dt = datetime.datetime(2006, 5, 1, 10, tzinfo=pytz.UTC)
GP> >>> normalize(request, dt)
GP> datetime.datetime(2006, 5, 1, 10, 0, tzinfo=<UTC>)
GP> However, I actually added this test to zc.i18n.date and it passed. I
GP> checked it in (revision 69155), but I assume that means that I still
GP> don't understand what the problem you identified is. Could you maybe
GP> post a doctest that fails?
GP> Thanks
GP> Gary
--
Best regards,
Groszer Adam
--
Quote of the day:
A thing moderately good is not so good as it ought to be. Moderation in temper is always a virtue; but moderation in principle is always a vice.
- Thomas Paine
More information about the Zope3-dev
mailing list