workflows: do not let aggregation emails be sent to submitter (#6231) #747

Merged
fpeters merged 1 commits from wip/6231-aggregation-no-submitter into main 2023-10-02 19:10:47 +02:00
3 changed files with 27 additions and 5 deletions

View File

@ -4056,3 +4056,19 @@ def test_workflow_backoffice_field_statistics_data_update(pub):
formdata.refresh_from_storage()
assert formdata.statistics_data == {'bool': [True]}
def test_workflows_edit_aggregationemail_action(pub):
create_superuser(pub)
pub.role_class.wipe()
role = pub.role_class(name='foobar')
role.store()
Workflow.wipe()
workflow = Workflow(name='foo')
st = workflow.add_status(name='baz')
item = st.add_action('aggregationemail')
workflow.store()
app = login(get_app(pub))
resp = app.get(item.get_admin_url())
assert '_submitter' not in [x[0] for x in resp.form['to$element0'].options]

View File

@ -53,7 +53,8 @@ class AggregationEmailWorkflowStatusItem(WorkflowStatusItem):
add_element_label=self.get_add_role_label(),
element_kwargs={
'render_br': False,
'options': [(None, '---', None)] + self.get_list_of_roles(include_logged_in_users=False),
'options': [(None, '---', None)]
+ self.get_list_of_roles(include_submitter=False, include_logged_in_users=False),
},
)

View File

@ -1251,9 +1251,12 @@ class Workflow(StorableObject):
return workflow
def get_list_of_roles(self, include_logged_in_users=True, include_signed_calls=False):
def get_list_of_roles(
self, include_logged_in_users=True, include_signed_calls=False, include_submitter=True
):
t = []
t.append(('_submitter', pgettext_lazy('role', 'User'), '_submitter'))
if include_submitter:
t.append(('_submitter', pgettext_lazy('role', 'User'), '_submitter'))
for workflow_role in self.roles.items():
t.append(list(workflow_role) + [workflow_role[0]])
if include_logged_in_users:
@ -2700,8 +2703,10 @@ class WorkflowStatusItem(XmlSerialisable):
def render_list_of_roles(self, roles):
return self.get_workflow().render_list_of_roles(roles)
def get_list_of_roles(self, include_logged_in_users=True):
return self.get_workflow().get_list_of_roles(include_logged_in_users=include_logged_in_users)
def get_list_of_roles(self, include_logged_in_users=True, include_submitter=True):
return self.get_workflow().get_list_of_roles(
include_logged_in_users=include_logged_in_users, include_submitter=include_submitter
)
def get_add_role_label(self):
return self.get_workflow().get_add_role_label()