From 449f75b8535d1b0e03d51eef16862240d7cbc041 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 4 Feb 2016 17:52:14 +0100 Subject: [PATCH] misc: use wysiwyg widgets for comments field (#9839) --- tests/test_admin_pages.py | 31 +++++++++++++++++++++++++++++++ wcs/fields.py | 9 +++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/tests/test_admin_pages.py b/tests/test_admin_pages.py index 3e73ff0..10edeb7 100644 --- a/tests/test_admin_pages.py +++ b/tests/test_admin_pages.py @@ -950,6 +950,37 @@ def test_form_edit_page_field(pub): {'condition': 'foo2', 'error_message': 'bar2'}, ] +def test_form_edit_comment_field(pub): + create_superuser(pub) + create_role() + + FormDef.wipe() + formdef = FormDef() + formdef.name = 'form title' + formdef.fields = [fields.CommentField(id='1', label='a comment field', type='comment')] + formdef.store() + + app = login(get_app(pub)) + resp = app.get('/backoffice/forms/1/fields/1/') + assert 'a comment field' in resp.body + assert 'WysiwygTextWidget' in resp.body + + # legacy, double line breaks will be converted to paragraphs + formdef.fields = [fields.CommentField(id='1', type='comment', + label='a comment field\n\na second line')] + formdef.store() + resp = app.get('/backoffice/forms/1/fields/1/') + assert not 'WysiwygTextWidget' in resp.body + + # starting with a < + formdef.fields = [fields.CommentField(id='1', type='comment', + label='a comment field\n\na second line')] + formdef.store() + resp = app.get('/backoffice/forms/1/fields/1/') + assert 'WysiwygTextWidget' in resp.body + + + def test_form_legacy_int_id(pub): create_superuser(pub) create_role() diff --git a/wcs/fields.py b/wcs/fields.py index e6172e4..90c029b 100644 --- a/wcs/fields.py +++ b/wcs/fields.py @@ -501,8 +501,13 @@ class CommentField(Field): pass def fill_admin_form(self, form): - form.add(TextWidget, 'label', title = _('Label'), value = self.label, - required = True, cols = 70, rows = 3, render_br = False) + if self.label and (not self.label.startswith('<') and ( + '\n\n' in self.label or '[end]' in self.label)): + form.add(TextWidget, 'label', title=_('Label'), value=self.label, + required=True, cols=70, rows=3, render_br=False) + else: + form.add(WysiwygTextWidget, 'label', title=_('Label'), value=self.label, + required=True) form.add(StringWidget, 'extra_css_class', title = _('Extra classes for CSS styling'), value=self.extra_css_class, size=30, advanced=(not self.extra_css_class)) -- 2.7.0