[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