Commit d5245b1b authored by Nicolas Delaby's avatar Nicolas Delaby

LinesFieldWidget can not use TextAreaFieldWidget anymore as

it escapes values now.
Add test to avoid regressions

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@33913 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent da170af1
...@@ -40,7 +40,7 @@ from Acquisition import aq_base ...@@ -40,7 +40,7 @@ from Acquisition import aq_base
from Products.Formulator.FieldRegistry import FieldRegistry from Products.Formulator.FieldRegistry import FieldRegistry
from Products.Formulator.Validator import ValidationError from Products.Formulator.Validator import ValidationError
from Products.Formulator.StandardFields import FloatField, StringField,\ 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.MethodField import Method, BoundMethod
from Products.Formulator.TALESField import TALESMethod from Products.Formulator.TALESField import TALESMethod
...@@ -297,6 +297,19 @@ class TestTextAreaField(ERP5TypeTestCase): ...@@ -297,6 +297,19 @@ class TestTextAreaField(ERP5TypeTestCase):
.xpath('%s/text:tab' % ODG_XML_WRAPPING_XPATH, namespaces=NSMAP) .xpath('%s/text:tab' % ODG_XML_WRAPPING_XPATH, namespaces=NSMAP)
self.assertTrue(test_value) 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): class TestCheckBoxField(ERP5TypeTestCase):
"""Tests TextArea field """Tests TextArea field
""" """
...@@ -790,6 +803,7 @@ def test_suite(): ...@@ -790,6 +803,7 @@ def test_suite():
suite.addTest(unittest.makeSuite(TestStringField)) suite.addTest(unittest.makeSuite(TestStringField))
suite.addTest(unittest.makeSuite(TestDateTimeField)) suite.addTest(unittest.makeSuite(TestDateTimeField))
suite.addTest(unittest.makeSuite(TestTextAreaField)) suite.addTest(unittest.makeSuite(TestTextAreaField))
suite.addTest(unittest.makeSuite(TestLinesField))
suite.addTest(unittest.makeSuite(TestCheckBoxField)) suite.addTest(unittest.makeSuite(TestCheckBoxField))
suite.addTest(unittest.makeSuite(TestListField)) suite.addTest(unittest.makeSuite(TestListField))
suite.addTest(unittest.makeSuite(TestProxyField)) suite.addTest(unittest.makeSuite(TestProxyField))
......
...@@ -599,14 +599,17 @@ class LinesTextAreaWidget(TextAreaWidget): ...@@ -599,14 +599,17 @@ class LinesTextAreaWidget(TextAreaWidget):
def render_view(self, field, value, REQUEST=None, render_prefix=None): def render_view(self, field, value, REQUEST=None, render_prefix=None):
if value is None: if value is None:
return '' return ''
elif isinstance(value, (str, unicode)): if isinstance(value, (str, unicode)):
value = [value] value = value.split('\n')
return TextAreaWidget.render_view( line_separator = field.get_value('view_separator')
self,
field, value_list = [escape(part).replace('\n', line_separator) for part in value]
string.join(value, field.get_value('view_separator')), value = line_separator.join(value_list)
REQUEST, 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, def render_odt_view(self, field, value, as_string, ooo_builder, REQUEST,
render_prefix, attr_dict, local_name): render_prefix, attr_dict, local_name):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment