This commit is contained in:
parent
d407843150
commit
3ce5be80f2
|
@ -12,6 +12,7 @@ from wcs.formdef import FormDef
|
|||
from wcs.qommon.http_request import HTTPRequest
|
||||
from wcs.qommon.upload_storage import PicklableUpload
|
||||
from wcs.wf.backoffice_fields import SetBackofficeFieldsWorkflowStatusItem
|
||||
from wcs.wf.dispatch import DispatchWorkflowStatusItem
|
||||
from wcs.workflows import SendmailWorkflowStatusItem, Workflow, WorkflowBackofficeFieldsFormDef
|
||||
|
||||
from ..utilities import MockSubstitutionVariables, clean_temporary_pub, create_temporary_pub
|
||||
|
@ -480,3 +481,47 @@ def test_workflow_email_line_details(pub):
|
|||
|
||||
sendmail.to = ['{{ foobar }}']
|
||||
assert sendmail.get_line_details() == 'to computed value'
|
||||
|
||||
|
||||
def test_workflow_email_to_user_function(pub, emails):
|
||||
user = pub.user_class(name='foo')
|
||||
user.email = 'foobar@localhost'
|
||||
user.name_identifiers = ['0123456789']
|
||||
user.store()
|
||||
|
||||
workflow = Workflow(name='wf roles')
|
||||
st1 = workflow.add_status('Status1', 'st1')
|
||||
item1 = DispatchWorkflowStatusItem()
|
||||
item1.role_key = '_receiver'
|
||||
item1.role_id = '{{ form_user }}'
|
||||
st1.items.append(item1)
|
||||
item1.parent = st1
|
||||
item2 = SendmailWorkflowStatusItem()
|
||||
item2.to = ['_receiver']
|
||||
item2.subject = 'Foobar'
|
||||
item2.body = 'Hello'
|
||||
st1.items.append(item2)
|
||||
item2.parent = st1
|
||||
workflow.store()
|
||||
|
||||
formdef = FormDef()
|
||||
formdef.name = 'baz'
|
||||
formdef.fields = []
|
||||
formdef.workflow_id = workflow.id
|
||||
formdef.store()
|
||||
|
||||
formdata = formdef.data_class()()
|
||||
formdata.user_id = user.id
|
||||
formdata.just_created()
|
||||
formdata.store()
|
||||
pub.substitutions.feed(formdata)
|
||||
|
||||
item1.perform(formdata)
|
||||
assert formdata.workflow_roles == {'_receiver': ['_user:%s' % user.id]}
|
||||
|
||||
emails.empty()
|
||||
item2.perform(formdata)
|
||||
get_response().process_after_jobs()
|
||||
assert emails.count() == 1
|
||||
assert emails.get('Foobar')
|
||||
assert emails.get('Foobar')['email_rcpt'] == ['foobar@localhost']
|
||||
|
|
|
@ -3117,6 +3117,15 @@ class SendmailWorkflowStatusItem(WorkflowStatusItem):
|
|||
continue
|
||||
|
||||
for real_dest in formdata.get_function_roles(dest):
|
||||
if real_dest.startswith('_user:'):
|
||||
try:
|
||||
user = get_publisher().user_class.get(real_dest.split(':')[1])
|
||||
except KeyError:
|
||||
continue
|
||||
if user.email:
|
||||
addresses.append(user.email)
|
||||
continue
|
||||
|
||||
try:
|
||||
role = get_publisher().role_class.get(real_dest)
|
||||
except KeyError:
|
||||
|
|
Loading…
Reference in New Issue