[Checkins] SVN: CMF/trunk/CMFDefault/formlib/schema. - added Pdata support

Yvo Schubbe y.2007- at wcm-solutions.de
Wed Feb 14 07:19:27 EST 2007


Log message for revision 72567:
  - added Pdata support

Changed:
  U   CMF/trunk/CMFDefault/formlib/schema.py
  U   CMF/trunk/CMFDefault/formlib/schema.txt

-=-
Modified: CMF/trunk/CMFDefault/formlib/schema.py
===================================================================
--- CMF/trunk/CMFDefault/formlib/schema.py	2007-02-14 03:44:40 UTC (rev 72566)
+++ CMF/trunk/CMFDefault/formlib/schema.py	2007-02-14 12:19:25 UTC (rev 72567)
@@ -18,6 +18,7 @@
 from datetime import datetime
 
 from DateTime.DateTime import DateTime
+from OFS.Image import Pdata
 from zope.datetime import parseDatetimetz
 from zope.interface import implements
 from zope.schema import BytesLine
@@ -62,14 +63,18 @@
             attribute = getattr(field, 'default', _marker)
             if attribute is _marker:
                 raise AttributeError(self._field.__name__)
+        elif isinstance(attribute, Pdata):
+            attribute = str(attribute)
         elif callable(attribute):
             attribute = attribute()
 
+        if self._field._type == str:
+            return attribute
         if isinstance(attribute, str) and inst.encoding:
             return attribute.decode(inst.encoding)
-        elif isinstance(attribute, DateTime):
+        if isinstance(attribute, DateTime):
             return parseDatetimetz(attribute.ISO8601())
-        elif isinstance(attribute, (tuple, list)):
+        if isinstance(attribute, (tuple, list)):
             if inst.encoding:
                 attribute = [ isinstance(v, str)
                               and v.decode(inst.encoding) or v

Modified: CMF/trunk/CMFDefault/formlib/schema.txt
===================================================================
--- CMF/trunk/CMFDefault/formlib/schema.txt	2007-02-14 03:44:40 UTC (rev 72566)
+++ CMF/trunk/CMFDefault/formlib/schema.txt	2007-02-14 12:19:25 UTC (rev 72567)
@@ -9,6 +9,7 @@
       >>> class FooContent(PropertyManager):
       ...     _properties=({'id':'foo_prop', 'type': 'string'},)
       ...     foo_text = ''
+      ...     foo_bytes = ''
       ...     foo_datetime = None
       ...     foo_set = ()
       ...     foo_list = []
@@ -19,6 +20,7 @@
       >>> from zope import schema
       >>> class IFooContentView(Interface):
       ...     foo_text = schema.Text()
+      ...     foo_bytes = schema.Bytes()
       ...     foo_datetime = schema.Datetime()
       ...     foo_set = schema.Set()
       ...     foo_list = schema.List()
@@ -29,6 +31,7 @@
       >>> class FooContentAdapter(object):
       ... 
       ...     foo_text = ProxyFieldProperty(IFooContentView['foo_text'])
+      ...     foo_bytes = ProxyFieldProperty(IFooContentView['foo_bytes'])
       ...     foo_datetime = ProxyFieldProperty(IFooContentView['foo_datetime'])
       ...     foo_set = ProxyFieldProperty(IFooContentView['foo_set'])
       ...     foo_list = ProxyFieldProperty(IFooContentView['foo_list'])
@@ -51,6 +54,18 @@
       >>> adapter.foo_text == foo_text
       True
 
+    Pdata is read as str::
+
+      >>> from OFS.Image import Pdata
+      >>> foo_bytes = 'foo'
+      >>> content.foo_bytes = Pdata(foo_bytes)
+      >>> isinstance(content.foo_bytes, Pdata)
+      True
+      >>> isinstance(adapter.foo_bytes, Pdata)
+      False
+      >>> adapter.foo_bytes == foo_bytes
+      True
+
     datetime is mapped to DateTime::
 
       >>> from datetime import datetime



More information about the Checkins mailing list