0001-workflows-add-target-roles-in-display-message-workfl.patch
tests/test_workflows.py | ||
---|---|---|
779 | 779 |
display_message.message = '[foo]' |
780 | 780 |
assert display_message.get_message(formdata) == '1 < 3' |
781 | 781 | |
782 |
def test_workflow_display_message_to(pub): |
|
783 |
workflow = Workflow(name='display message') |
|
784 |
st1 = workflow.add_status('Status1', 'st1') |
|
785 | ||
786 |
FormDef.wipe() |
|
787 |
formdef = FormDef() |
|
788 |
formdef.name = 'foobar' |
|
789 |
formdef.fields = [] |
|
790 |
formdef.store() |
|
791 |
formdata = formdef.data_class()() |
|
792 |
formdata.id = '1' |
|
793 |
formdata.status = 'wf-st1' |
|
794 |
formdata.store() |
|
795 | ||
796 |
display_message = DisplayMessageWorkflowStatusItem() |
|
797 |
display_message.parent = st1 |
|
798 |
st1.items.append(display_message) |
|
799 |
workflow.store() |
|
800 |
formdef.workflow = workflow |
|
801 |
formdef.store() |
|
802 | ||
803 |
display_message.message = 'all' |
|
804 |
display_message.to = None |
|
805 |
workflow.store() |
|
806 |
assert display_message.get_message(formdata) == 'all' |
|
807 |
assert formdata.workflow_messages() == ['all'] |
|
808 | ||
809 |
display_message.message = 'only-submitter' |
|
810 |
display_message.to = ['_submitter'] |
|
811 |
workflow.store() |
|
812 |
formdef.workflow = workflow |
|
813 |
formdef.store() |
|
814 |
assert display_message.get_message(formdata) == '' |
|
815 |
assert formdata.workflow_messages() == [] |
|
816 | ||
782 | 817 |
def test_workflow_roles(pub): |
783 | 818 |
pub.substitutions.feed(MockSubstitutionVariables()) |
784 | 819 |
wcs/formdata.py | ||
---|---|---|
279 | 279 |
url = perform_items(wf_status.items, self) |
280 | 280 |
return url |
281 | 281 | |
282 |
def display_workflow_message(self):
|
|
282 |
def workflow_messages(self):
|
|
283 | 283 |
wf_status = self.get_status() |
284 | 284 |
if not wf_status: |
285 |
return '' |
|
286 |
for status in wf_status.items: |
|
287 |
if hasattr(status, 'get_message'): |
|
288 |
return status.get_message(self) |
|
289 |
return '' |
|
285 |
return [] |
|
286 |
messages = [] |
|
287 |
for item in wf_status.items: |
|
288 |
if hasattr(item, 'get_message'): |
|
289 |
message = item.get_message(self) |
|
290 |
if message: |
|
291 |
messages.append(message) |
|
292 |
return messages |
|
290 | 293 | |
291 | 294 |
def get_status(self, status = None): |
292 | 295 |
if not status: |
wcs/forms/common.py | ||
---|---|---|
132 | 132 |
self.check_auth(api_call=True) |
133 | 133 |
return self.export_to_json() |
134 | 134 | |
135 |
def receipt_message(self, mine=False):
|
|
135 |
def workflow_messages(self):
|
|
136 | 136 |
if self.formdef.workflow: |
137 |
workflow_message = self.filled.display_workflow_message()
|
|
138 |
if workflow_message: |
|
137 |
workflow_messages = self.filled.workflow_messages()
|
|
138 |
if workflow_messages:
|
|
139 | 139 |
r = TemplateIO(html=True) |
140 |
if workflow_message.startswith('<'): |
|
141 |
r += htmltext(workflow_message) |
|
142 |
else: |
|
143 |
r += htmltext('<p>%s</p>' % workflow_message) |
|
140 |
for workflow_message in workflow_messages: |
|
141 |
if workflow_message.startswith('<'): |
|
142 |
r += htmltext(workflow_message) |
|
143 |
else: |
|
144 |
r += htmltext('<p>%s</p>' % workflow_message) |
|
144 | 145 |
return r.getvalue() |
146 |
return '' |
|
147 | ||
148 |
def receipt_message(self, mine=False): |
|
149 |
workflow_messages = self.workflow_messages() |
|
150 |
if workflow_messages: |
|
151 |
return workflow_messages |
|
145 | 152 | |
146 | 153 |
r = TemplateIO(html=True) |
147 | 154 |
# behaviour if workflow doesn't display any message |
... | ... | |
485 | 492 | |
486 | 493 |
r += self.receipt(always_include_user = True) |
487 | 494 | |
488 |
if self.formdef.workflow: |
|
489 |
r += htmltext(self.filled.display_workflow_message()) |
|
495 |
r += htmltext(self.workflow_messages()) |
|
490 | 496 | |
491 | 497 |
r += self.history() |
492 | 498 |
wcs/workflows.py | ||
---|---|---|
1804 | 1804 |
support_substitution_variables = True |
1805 | 1805 |
ok_in_global_action = False |
1806 | 1806 | |
1807 |
to = None |
|
1808 | ||
1807 | 1809 |
message = None |
1808 | 1810 | |
1811 |
def render_as_line(self): |
|
1812 |
if self.to: |
|
1813 |
return _('Display message to %s') % self.render_list_of_roles(self.to) |
|
1814 |
else: |
|
1815 |
return _('Display message') |
|
1816 | ||
1809 | 1817 |
def get_message(self, filled): |
1810 | 1818 |
if not self.message: |
1811 | 1819 |
return '' |
1820 | ||
1821 |
if self.to: |
|
1822 |
if not get_request(): |
|
1823 |
return '' |
|
1824 |
user = get_request().user |
|
1825 |
for role in self.to or []: |
|
1826 |
if role == '_submitter': |
|
1827 |
if filled.is_submitter(user): |
|
1828 |
break |
|
1829 |
elif user: |
|
1830 |
role = get_role_translation(filled, role) |
|
1831 |
if role in (user.roles or []): |
|
1832 |
break |
|
1833 |
else: |
|
1834 |
return '' |
|
1835 | ||
1812 | 1836 |
tmpl = ezt.Template() |
1813 | 1837 |
tmpl.parse(self.message, base_format=ezt.FORMAT_HTML) |
1814 | 1838 | |
... | ... | |
1830 | 1854 |
if 'message' in parameters: |
1831 | 1855 |
form.add(TextWidget, '%smessage' % prefix, title = _('Message'), |
1832 | 1856 |
value = self.message, cols = 80, rows = 10) |
1857 |
if 'to' in parameters: |
|
1858 |
form.add(WidgetList, '%sto' % prefix, title=_('To'), |
|
1859 |
element_type=SingleSelectWidget, |
|
1860 |
value=self.to or [], |
|
1861 |
add_element_label=_('Add Role'), |
|
1862 |
element_kwargs={'render_br': False, |
|
1863 |
'options': [(None, '---', None)] + |
|
1864 |
self.get_list_of_roles(include_logged_in_users=False)}) |
|
1833 | 1865 | |
1834 | 1866 |
def get_parameters(self): |
1835 |
return ('message',) |
|
1867 |
return ('message', 'to')
|
|
1836 | 1868 | |
1837 | 1869 |
register_item_class(DisplayMessageWorkflowStatusItem) |
1838 | 1870 | |
1839 |
- |