From 2e51c608cf0e7dce5254e05f93dc1e0398b0e530 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 | 8 ++++++-- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/tests/test_admin_pages.py b/tests/test_admin_pages.py index 9cb433c..1b18d4a 100644 --- a/tests/test_admin_pages.py +++ b/tests/test_admin_pages.py @@ -957,6 +957,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 97b1237..0fe227a 100644 --- a/wcs/fields.py +++ b/wcs/fields.py @@ -497,8 +497,12 @@ 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: + 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