backoffice: create new comments as HTML (#35793)

This commit is contained in:
Frédéric Péters 2019-09-07 11:28:28 +02:00
parent a4f2fa1158
commit d9d5fd2eed
2 changed files with 25 additions and 5 deletions

View File

@ -1583,6 +1583,22 @@ def test_form_edit_comment_field(pub):
resp = app.get('/backoffice/forms/1/fields/1/')
assert 'WysiwygTextWidget' not in resp.body
# check a new field is created with label as HTML, enclosing label in <p>
resp = app.get('/backoffice/forms/1/fields/')
resp.forms[0]['label'] = 'foobar'
resp.forms[0]['type'] = 'Comment'
resp = resp.forms[0].submit()
assert resp.location == 'http://example.net/backoffice/forms/1/fields/'
assert FormDef.get(formdef.id).fields[-1].label == '<p>foobar</p>'
# unless label is already given as HTML
resp = app.get('/backoffice/forms/1/fields/')
resp.forms[0]['label'] = '<div>blah</div>'
resp.forms[0]['type'] = 'Comment'
resp = resp.forms[0].submit()
assert resp.location == 'http://example.net/backoffice/forms/1/fields/'
assert FormDef.get(formdef.id).fields[-1].label == '<div>blah</div>'
def test_form_edit_map_field(pub):
create_superuser(pub)
create_role()

View File

@ -18,7 +18,7 @@
from quixote import redirect
from quixote.directory import Directory
from quixote.html import TemplateIO, htmltext
from quixote.html import TemplateIO, htmltext, htmlescape
from qommon import _
from qommon.form import *
@ -392,11 +392,15 @@ class FieldsDirectory(Directory):
else:
insertion_point = len(self.objectdef.fields)
if form.get_widget('label').parse() and form.get_widget('type').parse():
field_type = form.get_widget('type').parse()
if form.get_widget('label').parse() and field_type:
label = form.get_widget('label').parse()
if field_type == 'comment' and not label.startswith('<'):
label = '<p>%s</p>' % htmlescape(label)
self.objectdef.fields.insert(insertion_point,
fields.get_field_class_by_type(form.get_widget('type').parse())(
label = form.get_widget('label').parse(),
type = form.get_widget('type').parse(),
fields.get_field_class_by_type(field_type)(
label=label,
type=field_type,
id =self.objectdef.get_new_field_id()))
elif form.get_widget('form') and form.get_widget('form').parse():
formdef = FormDef.get(form.get_widget('form').parse())