38 |
38 |
from wcs.data_sources import NamedDataSource
|
39 |
39 |
from wcs.wscalls import NamedWsCall
|
40 |
40 |
from wcs.roles import Role
|
41 |
|
from wcs.workflows import (Workflow, DisplayMessageWorkflowStatusItem,
|
42 |
|
WorkflowCriticalityLevel, WorkflowBackofficeFieldsFormDef,
|
43 |
|
CommentableWorkflowStatusItem)
|
|
41 |
from wcs.workflows import (
|
|
42 |
Workflow, DisplayMessageWorkflowStatusItem, WorkflowCriticalityLevel,
|
|
43 |
WorkflowBackofficeFieldsFormDef, CommentableWorkflowStatusItem,
|
|
44 |
ChoiceWorkflowStatusItem, JumpOnSubmitWorkflowStatusItem)
|
44 |
45 |
from wcs.wf.export_to_model import ExportToModel
|
45 |
46 |
from wcs.wf.jump import JumpWorkflowStatusItem
|
46 |
47 |
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
|
47 |
48 |
from wcs.wf.wscall import WebserviceCallStatusItem
|
|
49 |
from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem
|
|
50 |
from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, Mapping
|
48 |
51 |
from wcs.formdef import FormDef
|
49 |
52 |
from wcs.carddef import CardDef
|
50 |
53 |
from wcs import fields
|
... | ... | |
5571 |
5574 |
assert resp.location == 'http://example.net/backoffice/cards/1/workflow-status-remapping?new=%s' % '_carddef_default'
|
5572 |
5575 |
resp = resp.follow()
|
5573 |
5576 |
resp = resp.form.submit('submit').follow()
|
|
5577 |
|
|
5578 |
|
|
5579 |
def test_create_formdata(pub):
|
|
5580 |
create_superuser(pub)
|
|
5581 |
create_role()
|
|
5582 |
|
|
5583 |
FormDef.wipe()
|
|
5584 |
target_formdef = FormDef()
|
|
5585 |
target_formdef.name = 'target form'
|
|
5586 |
target_formdef.enable_tracking_codes = True
|
|
5587 |
target_formdef.fields = [
|
|
5588 |
fields.StringField(id='0', label='string', varname='foo_string'),
|
|
5589 |
fields.FileField(id='1', label='file', type='file', varname='foo_file'),
|
|
5590 |
]
|
|
5591 |
target_formdef.store()
|
|
5592 |
|
|
5593 |
Workflow.wipe()
|
|
5594 |
wf = Workflow(name='create-formdata')
|
|
5595 |
|
|
5596 |
st1 = wf.add_status('New')
|
|
5597 |
st2 = wf.add_status('Resubmit')
|
|
5598 |
|
|
5599 |
jump = ChoiceWorkflowStatusItem()
|
|
5600 |
jump.id = '_resubmit'
|
|
5601 |
jump.label = 'Resubmit'
|
|
5602 |
jump.by = ['_submitter']
|
|
5603 |
jump.status = st2.id
|
|
5604 |
jump.parent = st1
|
|
5605 |
st1.items.append(jump)
|
|
5606 |
|
|
5607 |
create_formdata = CreateFormdataWorkflowStatusItem()
|
|
5608 |
create_formdata.label = 'resubmit as new formdata'
|
|
5609 |
create_formdata.varname = 'resubmitted'
|
|
5610 |
create_formdata.id = '_create_formdata'
|
|
5611 |
create_formdata.formdef_slug = target_formdef.url_name
|
|
5612 |
create_formdata.mappings = [
|
|
5613 |
Mapping(varname='foo_string', expression='=form_var_toto_string'),
|
|
5614 |
Mapping(varname='foo_file', expression='=form_var_toto_file_raw'),
|
|
5615 |
]
|
|
5616 |
create_formdata.parent = st2
|
|
5617 |
st2.items.append(create_formdata)
|
|
5618 |
|
|
5619 |
redirect = RedirectToUrlWorkflowStatusItem()
|
|
5620 |
redirect.id = '_redirect'
|
|
5621 |
redirect.url = '{{ linked.url }}'
|
|
5622 |
redirect.parent = st2
|
|
5623 |
st2.items.append(redirect)
|
|
5624 |
|
|
5625 |
jump = JumpOnSubmitWorkflowStatusItem()
|
|
5626 |
jump.id = '_jump'
|
|
5627 |
jump.status = st1.id
|
|
5628 |
jump.parent = st2
|
|
5629 |
st2.items.append(jump)
|
|
5630 |
|
|
5631 |
wf.store()
|
|
5632 |
|
|
5633 |
app = login(get_app(pub))
|
|
5634 |
resp = app.get('/backoffice/workflows/%s/status/%s/' % (wf.id, st2.id))
|
|
5635 |
pq = resp.pyquery.remove_namespaces()
|
|
5636 |
assert pq('option[value="New formdata"]').text() == 'New formdata'
|
|
5637 |
assert 'resubmit as new formdata - resubmitted' in resp
|
|
5638 |
|
|
5639 |
resp = resp.click('Edit', href='items/_create_formdata/', )
|
|
5640 |
resp.form.set('label', 'really resubmit')
|
|
5641 |
resp = resp.form.submit(name='submit')
|
|
5642 |
resp = resp.follow()
|
|
5643 |
|
|
5644 |
# checks that nothing changed after submit
|
|
5645 |
wf2 = Workflow.select()[0]
|
|
5646 |
item = wf2.get_status('2').items[0]
|
|
5647 |
assert item.label == 'really resubmit'
|
|
5648 |
assert isinstance(item, CreateFormdataWorkflowStatusItem)
|
|
5649 |
assert item != wf.get_status('2').items[0]
|
|
5650 |
wf.get_status('2').items[0].label = 'really resubmit'
|
|
5651 |
assert item == wf.get_status('2').items[0]
|
|
5652 |
|
|
5653 |
# duplicate
|
|
5654 |
resp = app.get('/backoffice/workflows/%s/status/%s/items/_create_formdata/' % (wf.id, st2.id))
|
|
5655 |
resp.form.set('mappings$element1$varname', 'foo_string')
|
|
5656 |
resp = resp.form.submit(name='submit')
|
|
5657 |
pq = resp.pyquery.remove_namespaces()
|
|
5658 |
assert pq('.error').text() == 'Some destination fields are duplicated'
|
5574 |
|
-
|