workflows: add a level parameter to message action (#21704)

This commit is contained in:
Frédéric Péters 2018-02-24 19:19:55 +01:00
parent 999773b35d
commit 7f2fd893d0
2 changed files with 21 additions and 2 deletions

View File

@ -3571,6 +3571,12 @@ def test_display_message(pub):
assert 'message-to-xxx-and-submitter' in page.body
assert page.body.index('message-to-submitter') > page.body.index('message-to-xxx-and-submitter')
# set a level
display2.level = 'warning'
workflow.store()
page = app.get(formdata.get_url())
assert 'warningnotice' in page.body
def test_session_cookie_flags(pub):
formdef = create_formdef()
app = get_app(pub)

View File

@ -2403,6 +2403,7 @@ class DisplayMessageWorkflowStatusItem(WorkflowStatusItem):
to = None
position = 'top'
level = None
message = None
def get_line_details(self):
@ -2445,13 +2446,25 @@ class DisplayMessageWorkflowStatusItem(WorkflowStatusItem):
if handling_role and handling_role.details:
dict['receiver'] = handling_role.details.replace('\n', '<br />')
return Template(self.message, ezt_format=ezt.FORMAT_HTML).render(dict)
message = self.message
if self.level:
message = '<div class="%snotice">%s</div>' % (self.level, message)
return Template(message, ezt_format=ezt.FORMAT_HTML).render(dict)
def add_parameters_widgets(self, form, parameters, prefix='', formdef=None):
if 'message' in parameters:
form.add(TextWidget, '%smessage' % prefix, title = _('Message'),
value=self.message, cols=80, rows=10,
validation_function=ComputedExpressionWidget.validate_template)
if 'level' in parameters:
form.add(SingleSelectWidget, '%slevel' % prefix, title=_('Level'),
value=self.level,
options=[(None, ''),
('success', _('Success')),
('info', _('Information')),
('warning', _('Warning')),
('error', _('Error'))])
if 'position' in parameters:
form.add(SingleSelectWidget, '%sposition' % prefix, title=_('Position'),
value=self.position,
@ -2469,7 +2482,7 @@ class DisplayMessageWorkflowStatusItem(WorkflowStatusItem):
self.get_list_of_roles(include_logged_in_users=False)})
def get_parameters(self):
return ('message', 'position', 'to')
return ('message', 'level', 'position', 'to')
def get_message_parameter_view_value(self):
if self.message.startswith('<'):