[Erp5-report] r33913 nicolas - in /erp5/trunk/products: ERP5Form/tests/ Formulator/

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Mar 19 11:55:11 CET 2010


Author: nicolas
Date: Fri Mar 19 11:55:09 2010
New Revision: 33913

URL: http://svn.erp5.org?rev=33913&view=rev
Log:
LinesFieldWidget can not use TextAreaFieldWidget anymore as
it escapes values now.
Add test to avoid regressions

Modified:
    erp5/trunk/products/ERP5Form/tests/testFields.py
    erp5/trunk/products/Formulator/Widget.py

Modified: erp5/trunk/products/ERP5Form/tests/testFields.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/tests/testFields.py?rev=33913&r1=33912&r2=33913&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/tests/testFields.py [utf8] (original)
+++ erp5/trunk/products/ERP5Form/tests/testFields.py [utf8] Fri Mar 19 11:55:09 2010
@@ -40,7 +40,7 @@
 from Products.Formulator.FieldRegistry import FieldRegistry
 from Products.Formulator.Validator import ValidationError
 from Products.Formulator.StandardFields import FloatField, StringField,\
-DateTimeField, TextAreaField, CheckBoxField, ListField
+DateTimeField, TextAreaField, CheckBoxField, ListField, LinesField
 from Products.Formulator.MethodField import Method, BoundMethod
 from Products.Formulator.TALESField import TALESMethod
 
@@ -296,6 +296,19 @@
     test_value = self.field.render_odg(as_string=False)\
       .xpath('%s/text:tab' % ODG_XML_WRAPPING_XPATH, namespaces=NSMAP)
     self.assertTrue(test_value)
+
+class TestLinesField(ERP5TypeTestCase):
+
+  def getTitle(self):
+    return "Lines Field"
+
+  def afterSetUp(self):
+    self.field = LinesField('test_field')
+    self.widget = self.field.widget
+
+  def test_render_view(self):
+    self.assertEquals(self.field.render_view(value=['My first Line\n', '&My Second Line\tfoo']),
+                      '<div  >My first Line<br />\n<br />\n&amp;My Second Line\tfoo</div>')
 
 class TestCheckBoxField(ERP5TypeTestCase):
   """Tests TextArea field
@@ -790,6 +803,7 @@
   suite.addTest(unittest.makeSuite(TestStringField))
   suite.addTest(unittest.makeSuite(TestDateTimeField))
   suite.addTest(unittest.makeSuite(TestTextAreaField))
+  suite.addTest(unittest.makeSuite(TestLinesField))
   suite.addTest(unittest.makeSuite(TestCheckBoxField))
   suite.addTest(unittest.makeSuite(TestListField))
   suite.addTest(unittest.makeSuite(TestProxyField))

Modified: erp5/trunk/products/Formulator/Widget.py
URL: http://svn.erp5.org/erp5/trunk/products/Formulator/Widget.py?rev=33913&r1=33912&r2=33913&view=diff
==============================================================================
--- erp5/trunk/products/Formulator/Widget.py [utf8] (original)
+++ erp5/trunk/products/Formulator/Widget.py [utf8] Fri Mar 19 11:55:09 2010
@@ -599,14 +599,17 @@
   def render_view(self, field, value, REQUEST=None, render_prefix=None):
     if value is None:
       return ''
-    elif isinstance(value, (str, unicode)):
-      value = [value]
-    return TextAreaWidget.render_view(
-        self,
-        field,
-        string.join(value, field.get_value('view_separator')),
-        REQUEST,
-    )
+    if isinstance(value, (str, unicode)):
+      value = value.split('\n')
+    line_separator = field.get_value('view_separator')
+
+    value_list = [escape(part).replace('\n', line_separator) for part in value]
+    value = line_separator.join(value_list)
+    return render_element("div",
+                          css_class=field.get_value('css_class'),
+                          contents=value,
+                          extra=field.get_value('extra'))
+
 
   def render_odt_view(self, field, value, as_string, ooo_builder, REQUEST,
       render_prefix, attr_dict, local_name):




More information about the Erp5-report mailing list