[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