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