[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/formlib/ - simplified DateTime conversion (using newer DateTime API)
Yvo Schubbe
y.2011 at wcm-solutions.de
Mon Feb 21 05:55:56 EST 2011
Log message for revision 120488:
- simplified DateTime conversion (using newer DateTime API)
- normalize to offset-naive datetimes, not to offset-aware datetimes
Changed:
UU Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py
UU Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.py
U Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.txt
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py 2011-02-21 09:32:31 UTC (rev 120487)
+++ Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py 2011-02-21 10:55:56 UTC (rev 120488)
@@ -11,8 +11,6 @@
#
##############################################################################
"""Formlib form base classes.
-
-$Id$
"""
from datetime import datetime
@@ -20,16 +18,14 @@
from AccessControl.SecurityInfo import ClassSecurityInfo
from App.class_init import InitializeClass
-from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
-
from five.formlib.formbase import PageAddForm
from five.formlib.formbase import PageDisplayForm
from five.formlib.formbase import PageForm
+from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from zope.component import adapts
from zope.component import getUtility
from zope.component.interfaces import IFactory
from zope.container.interfaces import INameChooser
-from zope.datetime import parseDatetimetz
from zope.formlib import form
from zope.formlib.interfaces import IPageForm
from zope.interface import implementsOnly
@@ -70,8 +66,8 @@
if v:
kw[k] = v
- query = kw and ( '?%s' % make_query(kw) ) or ''
- self.request.RESPONSE.redirect( '%s%s' % (target, query) )
+ query = kw and ('?%s' % make_query(kw)) or ''
+ self.request.RESPONSE.redirect('%s%s' % (target, query))
return ''
@@ -153,7 +149,7 @@
('object/folderContents', 'object/view'))
def create(self, data):
- id = data.pop('id', '') or ''
+ id = data.pop('id', '') or ''
factory = getUtility(IFactory, self.ti.factory)
obj = factory(id=id, **data)
obj._setPortalTypeName(self.ti.getId())
@@ -265,8 +261,9 @@
for k, v in data.iteritems():
if isinstance(v, Set):
data[k] = set(v)
- elif isinstance(v, datetime) and v.tzname() is None:
- data[k] = parseDatetimetz(str(v))
+ elif isinstance(v, datetime) and v.tzinfo:
+ # DatetimeWidget returns offset-aware datetime objects
+ data[k] = v.replace(tzinfo=None)
changes = self.applyChanges(data)
if changes:
self.status = self.successMessage
Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py
___________________________________________________________________
Deleted: svn:keywords
- Id
Modified: Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.py 2011-02-21 09:32:31 UTC (rev 120487)
+++ Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.py 2011-02-21 10:55:56 UTC (rev 120488)
@@ -15,17 +15,13 @@
SchemaAdapterBase and ProxyFieldProperty are legacy code. They should only be
used to adapt old content types that can't handle unicode and datetime
correctly.
-
-$Id$
"""
from datetime import datetime
from DateTime.DateTime import DateTime
from OFS.Image import Pdata
-
from zope.component import getUtility
-from zope.datetime import parseDatetimetz
from zope.interface import implements
from zope.schema import BytesLine
from zope.schema import Field
@@ -83,7 +79,7 @@
if isinstance(attribute, str) and inst.encoding:
return attribute.decode(inst.encoding)
if isinstance(attribute, DateTime):
- return parseDatetimetz(attribute.ISO8601())
+ return attribute.asdatetime().replace(tzinfo=None)
if isinstance(attribute, (tuple, list)):
if inst.encoding:
attribute = [ isinstance(v, str)
@@ -104,7 +100,7 @@
if isinstance(value, unicode) and inst.encoding:
value = value.encode(inst.encoding)
elif isinstance(value, datetime):
- value = DateTime(value.isoformat())
+ value = DateTime(value)
elif isinstance(value, (set, tuple, list)):
if inst.encoding:
value = [ isinstance(v, unicode)
Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.py
___________________________________________________________________
Deleted: svn:keywords
- Id
Modified: Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.txt 2011-02-21 09:32:31 UTC (rev 120487)
+++ Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.txt 2011-02-21 10:55:56 UTC (rev 120488)
@@ -103,8 +103,7 @@
>>> from datetime import datetime
>>> from DateTime.DateTime import DateTime
- >>> from Products.PluginIndexes.DateIndex.DateIndex import Local
- >>> foo_datetime = datetime(2002, 2, 2, 2, 2, 2, tzinfo=Local)
+ >>> foo_datetime = datetime(2002, 2, 2, 2, 2, 2)
>>> adapter.foo_datetime = foo_datetime
>>> isinstance(content.foo_datetime, DateTime)
True
More information about the checkins
mailing list