plone.supermodel handler
========================
If plone.supermodel is installed, this package will register a handler
for the RichText field.
First, we wire up the handlers
>>> configuration = """\
...
...
...
...
...
...
...
...
... """
>>> from StringIO import StringIO
>>> from zope.configuration import xmlconfig
>>> xmlconfig.xmlconfig(StringIO(configuration))
Then, let's test the fields. Note that 'default' and 'missing_value' are
unsupported.
>>> from zope.component import getUtility
>>> from plone.namedfile.field import NamedFile, NamedImage, NamedBlobFile, NamedBlobImage
>>> from plone.supermodel.interfaces import IFieldExportImportHandler
>>> from plone.supermodel.interfaces import IFieldNameExtractor
>>> from plone.supermodel.utils import prettyXML
>>> from lxml import etree
Named file
-----------
>>> field = NamedFile(__name__="dummy", title=u"Test",
... description=u"Test desc", required=False, readonly=True)
>>> fieldType = IFieldNameExtractor(field)()
>>> handler = getUtility(IFieldExportImportHandler, name=fieldType)
>>> element = handler.write(field, u'dummy', fieldType) #doctest: +ELLIPSIS
>>> print prettyXML(element)
Test desc
True
False
Test
>>> element = etree.XML("""\
...
... Test desc
...
... True
... False
... Test
...
... """)
>>> reciprocal = handler.read(element)
>>> reciprocal.__class__
>>> reciprocal.__name__
'dummy'
>>> reciprocal.title
u'Test'
>>> reciprocal.description
u'Test desc'
>>> reciprocal.required
False
>>> reciprocal.readonly
True
Named image
-----------
>>> field = NamedImage(__name__="dummy", title=u"Test",
... description=u"Test desc", required=False, readonly=True)
>>> fieldType = IFieldNameExtractor(field)()
>>> handler = getUtility(IFieldExportImportHandler, name=fieldType)
>>> element = handler.write(field, u'dummy', fieldType) #doctest: +ELLIPSIS
>>> print prettyXML(element)
Test desc
True
False
Test
>>> element = etree.XML("""\
...
... Test desc
...
... True
... False
... Test
...
... """)
>>> reciprocal = handler.read(element)
>>> reciprocal.__class__
>>> reciprocal.__name__
'dummy'
>>> reciprocal.title
u'Test'
>>> reciprocal.description
u'Test desc'
>>> reciprocal.required
False
>>> reciprocal.readonly
True
Named blob file
---------------
>>> field = NamedBlobFile(__name__="dummy", title=u"Test",
... description=u"Test desc", required=False, readonly=True)
>>> fieldType = IFieldNameExtractor(field)()
>>> handler = getUtility(IFieldExportImportHandler, name=fieldType)
>>> element = handler.write(field, u'dummy', fieldType) #doctest: +ELLIPSIS
>>> print prettyXML(element)
Test desc
True
False
Test
>>> element = etree.XML("""\
...
... Test desc
...
... True
... False
... Test
...
... """)
>>> reciprocal = handler.read(element)
>>> reciprocal.__class__
>>> reciprocal.__name__
'dummy'
>>> reciprocal.title
u'Test'
>>> reciprocal.description
u'Test desc'
>>> reciprocal.required
False
>>> reciprocal.readonly
True
Named blob image
----------------
>>> field = NamedBlobImage(__name__="dummy", title=u"Test",
... description=u"Test desc", required=False, readonly=True)
>>> fieldType = IFieldNameExtractor(field)()
>>> handler = getUtility(IFieldExportImportHandler, name=fieldType)
>>> element = handler.write(field, u'dummy', fieldType) #doctest: +ELLIPSIS
>>> print prettyXML(element)
Test desc
True
False
Test
>>> element = etree.XML("""\
...
... Test desc
...
... True
... False
... Test
...
... """)
>>> reciprocal = handler.read(element)
>>> reciprocal.__class__
>>> reciprocal.__name__
'dummy'
>>> reciprocal.title
u'Test'
>>> reciprocal.description
u'Test desc'
>>> reciprocal.required
False
>>> reciprocal.readonly
True