42 |
42 |
from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
|
43 |
43 |
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
|
44 |
44 |
from wcs.wf.resubmit import ResubmitWorkflowStatusItem
|
|
45 |
from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, Mapping
|
|
46 |
from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem
|
45 |
47 |
from wcs.categories import Category
|
46 |
48 |
from wcs.roles import Role, logged_users_role
|
47 |
49 |
from wcs.tracking_code import TrackingCode
|
... | ... | |
7339 |
7341 |
resp.forms[0]['f1'] = '2'
|
7340 |
7342 |
resp = resp.forms[0].submit('submit')
|
7341 |
7343 |
assert 'style="display: none"' in comment.search(resp.forms[0].text).group(0)
|
|
7344 |
|
|
7345 |
|
|
7346 |
@pytest.fixture
|
|
7347 |
def create_formdata(pub):
|
|
7348 |
class Fixture:
|
|
7349 |
pub = pub
|
|
7350 |
source_formdef = FormDef()
|
|
7351 |
source_formdef.name = 'source form'
|
|
7352 |
source_formdef.fields = [
|
|
7353 |
fields.StringField(id='0', label='string', varname='toto_string'),
|
|
7354 |
fields.FileField(id='1', label='file', type='file', varname='toto_file'),
|
|
7355 |
]
|
|
7356 |
source_formdef.store()
|
|
7357 |
|
|
7358 |
target_formdef = FormDef()
|
|
7359 |
target_formdef.name = 'target form'
|
|
7360 |
target_formdef.enable_tracking_codes = True
|
|
7361 |
target_formdef.fields = [
|
|
7362 |
fields.StringField(id='0', label='string', varname='foo_string'),
|
|
7363 |
fields.FileField(id='1', label='file', type='file', varname='foo_file'),
|
|
7364 |
]
|
|
7365 |
target_formdef.store()
|
|
7366 |
wf = Workflow(name='create-formdata')
|
|
7367 |
|
|
7368 |
st1 = wf.add_status('New')
|
|
7369 |
st2 = wf.add_status('Resubmit')
|
|
7370 |
|
|
7371 |
jump = ChoiceWorkflowStatusItem()
|
|
7372 |
jump.id = '_resubmit'
|
|
7373 |
jump.label = 'Resubmit'
|
|
7374 |
jump.by = ['_submitter']
|
|
7375 |
jump.status = st2.id
|
|
7376 |
jump.parent = st1
|
|
7377 |
st1.items.append(jump)
|
|
7378 |
|
|
7379 |
create_formdata = CreateFormdataWorkflowStatusItem()
|
|
7380 |
create_formdata.id = '_create_formdata'
|
|
7381 |
create_formdata.formdef_slug = target_formdef.url_name
|
|
7382 |
create_formdata.mappings = [
|
|
7383 |
Mapping(varname='foo_string', expression='=form_var_toto_string'),
|
|
7384 |
Mapping(varname='foo_file', expression='=form_var_toto_file_raw'),
|
|
7385 |
]
|
|
7386 |
create_formdata.parent = st2
|
|
7387 |
st2.items.append(create_formdata)
|
|
7388 |
|
|
7389 |
redirect = RedirectToUrlWorkflowStatusItem()
|
|
7390 |
redirect.id = '_redirect'
|
|
7391 |
redirect.url = '{{ linked.url }}'
|
|
7392 |
redirect.parent = st2
|
|
7393 |
st2.items.append(redirect)
|
|
7394 |
|
|
7395 |
jump = JumpOnSubmitWorkflowStatusItem()
|
|
7396 |
jump.id = '_jump'
|
|
7397 |
jump.status = st1.id
|
|
7398 |
jump.parent = st2
|
|
7399 |
st2.items.append(jump)
|
|
7400 |
|
|
7401 |
wf.store()
|
|
7402 |
source_formdef.workflow_id = wf.id
|
|
7403 |
source_formdef.store()
|
|
7404 |
return Fixture
|
|
7405 |
|
|
7406 |
|
|
7407 |
def test_create_formdata_anonymous(create_formdata):
|
|
7408 |
create_formdata.source_formdef.data_class().wipe()
|
|
7409 |
create_formdata.target_formdef.data_class().wipe()
|
|
7410 |
|
|
7411 |
app = get_app(create_formdata.pub)
|
|
7412 |
resp = app.get('/source-form/')
|
|
7413 |
resp.form['f0'] = 'zob'
|
|
7414 |
resp.form['f1$file'] = Upload('test.txt', b'foobar', 'text/plain')
|
|
7415 |
resp = resp.form.submit('submit') # -> validation
|
|
7416 |
resp = resp.form.submit('submit') # -> submission
|
|
7417 |
resp = resp.follow()
|
|
7418 |
assert create_formdata.target_formdef.data_class().count() == 0
|
|
7419 |
resp = resp.form.submit('button_resubmit')
|
|
7420 |
assert create_formdata.target_formdef.data_class().count() == 1
|
|
7421 |
assert create_formdata.target_formdef.data_class().select()[0].data.get('0') == 'zob'
|
|
7422 |
|
|
7423 |
assert create_formdata.target_formdef.data_class().select()[0].data.get('1').get_content() == b'foobar'
|
|
7424 |
assert create_formdata.target_formdef.data_class().select()[0].status == 'draft'
|
|
7425 |
assert create_formdata.target_formdef.data_class().select()[0].submission_context == {
|
|
7426 |
'orig_formdata_id': str(create_formdata.source_formdef.data_class().select()[0].id),
|
|
7427 |
'orig_formdef_id': str(create_formdata.source_formdef.id),
|
|
7428 |
}
|
|
7429 |
|
|
7430 |
resp = resp.follow()
|
|
7431 |
resp = resp.follow()
|
|
7432 |
assert 'zob' in resp
|
|
7433 |
resp = resp.forms[1].submit('submit') # -> validation
|
|
7434 |
resp = resp.forms[1].submit('submit') # -> submission
|
|
7435 |
assert create_formdata.target_formdef.data_class().count() == 1
|
|
7436 |
assert create_formdata.target_formdef.data_class().select()[0].data.get('1').get_content() == b'foobar'
|
|
7437 |
assert create_formdata.target_formdef.data_class().select()[0].data.get('1').get_content() == b'foobar'
|
|
7438 |
assert create_formdata.target_formdef.data_class().select()[0].status == 'wf-new'
|
7342 |
|
-
|