[Checkins] SVN: plone.z3cform/trunk/plone/z3cform/textlines/textlines.py Don't re-implement if we have z3c.form 2
Martin Aspeli
optilude at gmx.net
Tue Oct 20 07:32:33 EDT 2009
Log message for revision 105170:
Don't re-implement if we have z3c.form 2
Changed:
U plone.z3cform/trunk/plone/z3cform/textlines/textlines.py
-=-
Modified: plone.z3cform/trunk/plone/z3cform/textlines/textlines.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/textlines/textlines.py 2009-10-20 10:37:43 UTC (rev 105169)
+++ plone.z3cform/trunk/plone/z3cform/textlines/textlines.py 2009-10-20 11:32:33 UTC (rev 105170)
@@ -20,55 +20,72 @@
import zope.interface
import zope.schema.interfaces
-from z3c.form import interfaces
-from z3c.form import widget
-from z3c.form import converter
-from z3c.form.browser import textarea
+try:
-class ITextLinesWidget(interfaces.IWidget):
- """Text lines widget."""
+ # z3c.form 2.0 or later
-class TextLinesWidget(textarea.TextAreaWidget):
- """Input type sequence widget implementation."""
- zope.interface.implementsOnly(ITextLinesWidget)
+ from z3c.form.interfaces import ITextLinesWidget
+ from z3c.form.browser.textlines import TextLinesWidget
+ from z3c.form.browser.textlines import TextLinesFieldWidget
+ from z3c.form.browser.textlines import TextLinesFieldWidgetFactory
+ from z3c.form.converter import TextLinesConverter
+except ImportError:
+
+ # backport for z3c.form 1.9
-def TextLinesFieldWidget(field, request):
- """IFieldWidget factory for TextLinesWidget."""
- return widget.FieldWidget(field, TextLinesWidget(request))
+ from z3c.form import interfaces
+ from z3c.form import widget
+ from z3c.form import converter
+ from z3c.form.browser import textarea
- at zope.interface.implementer(interfaces.IFieldWidget)
-def TextLinesFieldWidgetFactory(field, value_type, request):
- """IFieldWidget factory for TextLinesWidget."""
- return TextLinesFieldWidget(field, request)
+ class ITextLinesWidget(interfaces.IWidget):
+ """Text lines widget."""
-class TextLinesConverter(converter.BaseDataConverter):
- """Data converter for ITextLinesWidget."""
+ class TextLinesWidget(textarea.TextAreaWidget):
+ """Input type sequence widget implementation."""
+ zope.interface.implementsOnly(ITextLinesWidget)
- zope.component.adapts(
- zope.schema.interfaces.ISequence, ITextLinesWidget)
- def toWidgetValue(self, value):
- """Convert from text lines to HTML representation."""
- # if the value is the missing value, then an empty list is produced.
- if value is self.field.missing_value:
- return u''
- return u'\n'.join(unicode(v) for v in value)
+ def TextLinesFieldWidget(field, request):
+ """IFieldWidget factory for TextLinesWidget."""
+ return widget.FieldWidget(field, TextLinesWidget(request))
- def toFieldValue(self, value):
- """See interfaces.IDataConverter"""
- widget = self.widget
- collectionType = self.field._type
- if isinstance(collectionType, tuple):
- collectionType = collectionType[-1]
- if not len(value):
- return self.field.missing_value
- valueType = self.field.value_type._type
- if isinstance(valueType, tuple):
- valueType = valueType[0]
- return collectionType(valueType(v) for v in value.split())
+ @zope.interface.implementer(interfaces.IFieldWidget)
+ def TextLinesFieldWidgetFactory(field, value_type, request):
+ """IFieldWidget factory for TextLinesWidget."""
+ return TextLinesFieldWidget(field, request)
+
+ class TextLinesConverter(converter.BaseDataConverter):
+ """Data converter for ITextLinesWidget."""
+
+ zope.component.adapts(
+ zope.schema.interfaces.ISequence, ITextLinesWidget)
+
+ def toWidgetValue(self, value):
+ """Convert from text lines to HTML representation."""
+ # if the value is the missing value, then an empty list is produced.
+ if value is self.field.missing_value:
+ return u''
+ return u'\n'.join(unicode(v) for v in value)
+
+ def toFieldValue(self, value):
+ """See interfaces.IDataConverter"""
+ widget = self.widget
+ collectionType = self.field._type
+ if isinstance(collectionType, tuple):
+ collectionType = collectionType[-1]
+ if not len(value):
+ return self.field.missing_value
+ valueType = self.field.value_type._type
+ if isinstance(valueType, tuple):
+ valueType = valueType[0]
+ return collectionType(valueType(v) for v in value.split())
+
+# additional
+
class TextLinesSetConverter(TextLinesConverter):
"""Data converter for ITextLinesWidget operating on a set."""
@@ -81,7 +98,7 @@
if value is self.field.missing_value:
return u''
return u'\n'.join(unicode(v) for v in sorted(value))
-
+
class TextLinesFrozenSetConverter(TextLinesConverter):
"""Data converter for ITextLinesWidget operating on a frozenset."""
@@ -93,4 +110,4 @@
# if the value is the missing value, then an empty list is produced.
if value is self.field.missing_value:
return u''
- return u'\n'.join(unicode(v) for v in sorted(value))
\ No newline at end of file
+ return u'\n'.join(unicode(v) for v in sorted(value))
More information about the checkins
mailing list