[Checkins]
SVN: Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.
- FileUpload and Choice both have _type==None but require
different handling
Yvo Schubbe
y.2008 at wcm-solutions.de
Fri May 23 04:09:37 EDT 2008
Log message for revision 86913:
- FileUpload and Choice both have _type==None but require different handling
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.py
U Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.txt
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.py 2008-05-23 03:13:14 UTC (rev 86912)
+++ Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.py 2008-05-23 08:09:35 UTC (rev 86913)
@@ -76,8 +76,10 @@
elif callable(attribute):
attribute = attribute()
- if self._field._type in (str, None):
+ if self._field._type == str:
return attribute
+ if isinstance(self._field, FileUpload):
+ return attribute
if isinstance(attribute, str) and inst.encoding:
return attribute.decode(inst.encoding)
if isinstance(attribute, DateTime):
Modified: Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.txt 2008-05-23 03:13:14 UTC (rev 86912)
+++ Products.CMFDefault/trunk/Products/CMFDefault/formlib/schema.txt 2008-05-23 08:09:35 UTC (rev 86913)
@@ -10,6 +10,8 @@
... _properties=({'id':'foo_prop', 'type': 'string'},)
... foo_text = ''
... foo_bytes = ''
+ ... foo_upload = ''
+ ... foo_choice = ''
... foo_datetime = None
... foo_set = ()
... foo_list = []
@@ -18,9 +20,12 @@
>>> from zope.interface import Interface
>>> from zope import schema
+ >>> from Products.CMFDefault.formlib.schema import FileUpload
>>> class IFooContentView(Interface):
... foo_text = schema.Text()
... foo_bytes = schema.Bytes()
+ ... foo_upload = FileUpload()
+ ... foo_choice = schema.Choice(values=(u'f\xf6\xf6', u'bar'))
... foo_datetime = schema.Datetime()
... foo_set = schema.Set()
... foo_list = schema.List()
@@ -32,6 +37,8 @@
...
... foo_text = ProxyFieldProperty(IFooContentView['foo_text'])
... foo_bytes = ProxyFieldProperty(IFooContentView['foo_bytes'])
+ ... foo_upload = ProxyFieldProperty(IFooContentView['foo_upload'])
+ ... foo_choice = ProxyFieldProperty(IFooContentView['foo_choice'])
... foo_datetime = ProxyFieldProperty(IFooContentView['foo_datetime'])
... foo_set = ProxyFieldProperty(IFooContentView['foo_set'])
... foo_list = ProxyFieldProperty(IFooContentView['foo_list'])
@@ -54,6 +61,29 @@
>>> adapter.foo_text == foo_text
True
+ >>> foo_choice = u'f\xf6\xf6'
+ >>> adapter.foo_choice = foo_choice
+ >>> content.foo_choice
+ 'f\xc3\xb6\xc3\xb6'
+ >>> adapter.foo_choice == foo_choice
+ True
+
+ bytes are not changed::
+
+ >>> foo_bytes = 'f\xc3\xb6\xc3\xb6'
+ >>> adapter.foo_bytes = foo_bytes
+ >>> content.foo_bytes
+ 'f\xc3\xb6\xc3\xb6'
+ >>> adapter.foo_bytes == foo_bytes
+ True
+
+ >>> foo_upload = 'f\xc3\xb6\xc3\xb6'
+ >>> adapter.foo_upload = foo_upload
+ >>> content.foo_upload
+ 'f\xc3\xb6\xc3\xb6'
+ >>> adapter.foo_upload == foo_upload
+ True
+
Pdata is read as str::
>>> from OFS.Image import Pdata
More information about the Checkins
mailing list