From f91d2a00effe1ff3bc66269eede3e0fdc5a8d3c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Sat, 24 Feb 2018 19:19:55 +0100 Subject: [PATCH] workflows: add a level parameter to message action (#21704) --- tests/test_form_pages.py | 6 ++++++ wcs/workflows.py | 17 +++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/tests/test_form_pages.py b/tests/test_form_pages.py index bbf1ef96..05215c6e 100644 --- a/tests/test_form_pages.py +++ b/tests/test_form_pages.py @@ -3580,6 +3580,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) diff --git a/wcs/workflows.py b/wcs/workflows.py index 376a29d0..fd223b39 100644 --- a/wcs/workflows.py +++ b/wcs/workflows.py @@ -2398,6 +2398,7 @@ class DisplayMessageWorkflowStatusItem(WorkflowStatusItem): to = None position = 'top' + level = None message = None def get_line_details(self): @@ -2440,13 +2441,25 @@ class DisplayMessageWorkflowStatusItem(WorkflowStatusItem): if handling_role and handling_role.details: dict['receiver'] = handling_role.details.replace('\n', '
') - return Template(self.message, ezt_format=ezt.FORMAT_HTML).render(dict) + message = self.message + if self.level: + message = '
%s
' % (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, @@ -2464,7 +2477,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('<'): -- 2.16.2