1275 |
1275 |
data_source={'type': 'foobar'}),
|
1276 |
1276 |
fields.BlockField(id='5', label='test', varname='blockdata', type='block:foobar', max_items=3),
|
1277 |
1277 |
]
|
1278 |
|
workflow = Workflow.get_default_workflow()
|
|
1278 |
Workflow.wipe()
|
|
1279 |
workflow = Workflow(name='foo')
|
|
1280 |
workflow.possible_status = Workflow.get_default_workflow().possible_status[:]
|
1279 |
1281 |
workflow.roles['_foobar'] = 'Foobar'
|
1280 |
|
workflow.id = '2'
|
1281 |
1282 |
workflow.store()
|
1282 |
1283 |
formdef.workflow_id = workflow.id
|
1283 |
1284 |
formdef.workflow_roles = {'_receiver': role.id,
|
... | ... | |
1331 |
1332 |
assert resp.json['user']['name'] == local_user.name
|
1332 |
1333 |
assert resp.json['fields']['foobar'] == 'foo@localhost'
|
1333 |
1334 |
assert resp.json['fields']['date'] == '2014-01-20'
|
1334 |
|
assert resp.json['fields']['file']['content'] == 'YmFzZTY0bWU=' # base64('base64me')
|
|
1335 |
assert resp.json['fields']['file']['content'] == 'YmFzZTY0bWU=' # base64('base64me')
|
1335 |
1336 |
assert resp.json['fields']['file']['filename'] == 'test.txt'
|
1336 |
1337 |
assert resp.json['fields']['file']['content_type'] == 'text/plain'
|
1337 |
1338 |
assert resp.json['fields']['item'] == 'foo'
|
... | ... | |
1340 |
1341 |
assert resp.json['fields']['blockdata'] == 'hello'
|
1341 |
1342 |
assert resp.json['fields']['blockdata_raw'] == [{'foo': 'plop', 'bar': 'foo', 'bar_raw': '1', 'bar_structured': 'XXX'}]
|
1342 |
1343 |
assert resp.json['workflow']['status']['name'] == 'New'
|
|
1344 |
assert resp.json['workflow']['real_status']['name'] == 'New'
|
1343 |
1345 |
assert resp.json['submission']['channel'] == 'web'
|
1344 |
1346 |
assert resp.json['geolocations']['base']['lon'] == 10
|
1345 |
1347 |
assert resp.json['geolocations']['base']['lat'] == -12
|
... | ... | |
1354 |
1356 |
resp2 = get_app(pub).get(sign_uri('/test/%s/' % formdata.id,
|
1355 |
1357 |
user=local_user), status=403)
|
1356 |
1358 |
|
|
1359 |
# check status visibility
|
|
1360 |
workflow.add_status('Status1', 'st1')
|
|
1361 |
workflow.possible_status[-1].visibility = ['unknown']
|
|
1362 |
workflow.store()
|
|
1363 |
formdata.jump_status('st1')
|
|
1364 |
assert formdata.status == 'wf-st1'
|
|
1365 |
|
|
1366 |
resp = get_app(pub).get(
|
|
1367 |
sign_uri('/api/forms/test/%s/' % formdata.id, user=local_user),
|
|
1368 |
status=200)
|
|
1369 |
assert resp.json['workflow']['status'] == {'id': 'new', 'name': 'New'}
|
|
1370 |
assert resp.json['workflow']['real_status'] == {'id': 'st1', 'name': 'Status1'}
|
|
1371 |
|
1357 |
1372 |
|
1358 |
1373 |
def test_formdata_backoffice_fields(pub, local_user):
|
1359 |
1374 |
test_formdata(pub, local_user)
|
1360 |
|
workflow = Workflow.get(2)
|
|
1375 |
Workflow.wipe()
|
|
1376 |
workflow = Workflow(name='foo')
|
1361 |
1377 |
workflow.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(workflow)
|
1362 |
1378 |
workflow.backoffice_fields_formdef.fields = [
|
1363 |
1379 |
fields.StringField(id='bo1', label='1st backoffice field',
|
... | ... | |
1440 |
1456 |
|
1441 |
1457 |
|
1442 |
1458 |
def test_formdata_edit(pub, local_user):
|
1443 |
|
test_formdata(pub, local_user)
|
1444 |
|
formdef = FormDef.select()[0]
|
1445 |
|
formdata = formdef.data_class().select()[0]
|
1446 |
|
workflow = formdef.workflow
|
|
1459 |
Role.wipe()
|
|
1460 |
role = Role(name='test')
|
|
1461 |
role.id = '123'
|
|
1462 |
role.store()
|
|
1463 |
another_role = Role(name='another')
|
|
1464 |
another_role.id = '321'
|
|
1465 |
another_role.store()
|
|
1466 |
local_user.roles = [role.id]
|
|
1467 |
local_user.store()
|
|
1468 |
FormDef.wipe()
|
|
1469 |
formdef = FormDef()
|
|
1470 |
formdef.name = 'test'
|
|
1471 |
formdef.fields = [
|
|
1472 |
fields.StringField(id='0', label='foobar', varname='foobar'),
|
|
1473 |
]
|
|
1474 |
Workflow.wipe()
|
|
1475 |
workflow = Workflow(name='foo')
|
|
1476 |
workflow.possible_status = Workflow.get_default_workflow().possible_status[:]
|
|
1477 |
workflow.roles['_foobar'] = 'Foobar'
|
|
1478 |
workflow.store()
|
|
1479 |
formdef.workflow_id = workflow.id
|
|
1480 |
formdef.workflow_roles = {'_receiver': role.id,
|
|
1481 |
'_foobar': another_role.id}
|
|
1482 |
formdef.store()
|
|
1483 |
formdef.data_class().wipe()
|
|
1484 |
formdata = formdef.data_class()()
|
|
1485 |
formdata.data = {
|
|
1486 |
'0': 'foo@localhost',
|
|
1487 |
}
|
|
1488 |
formdata.user_id = local_user.id
|
|
1489 |
formdata.just_created()
|
|
1490 |
formdata.status = 'wf-new'
|
|
1491 |
formdata.evolution[-1].status = 'wf-new'
|
|
1492 |
formdata.store()
|
1447 |
1493 |
|
1448 |
1494 |
# not user
|
1449 |
|
resp = get_app(pub).post_json(
|
|
1495 |
get_app(pub).post_json(
|
1450 |
1496 |
sign_uri('/api/forms/test/%s/' % formdata.id),
|
1451 |
1497 |
{'data': {'0': 'bar@localhost'}},
|
1452 |
1498 |
status=403)
|
1453 |
1499 |
|
1454 |
1500 |
# no editable action
|
1455 |
|
resp = get_app(pub).post_json(
|
|
1501 |
get_app(pub).post_json(
|
1456 |
1502 |
sign_uri('/api/forms/test/%s/' % formdata.id, user=local_user),
|
1457 |
1503 |
{'data': {'0': 'bar@localhost'}},
|
1458 |
1504 |
status=403)
|
... | ... | |
1464 |
1510 |
wfedit.parent = workflow.possible_status[1]
|
1465 |
1511 |
workflow.store()
|
1466 |
1512 |
|
1467 |
|
resp = get_app(pub).post_json(
|
|
1513 |
get_app(pub).post_json(
|
1468 |
1514 |
sign_uri('/api/forms/test/%s/' % formdata.id, user=local_user),
|
1469 |
1515 |
{'data': {'0': 'bar@localhost'}},
|
1470 |
1516 |
status=200)
|
... | ... | |
1473 |
1519 |
# not editable by user role
|
1474 |
1520 |
wfedit.by = ['XX']
|
1475 |
1521 |
workflow.store()
|
1476 |
|
resp = get_app(pub).post_json(
|
|
1522 |
get_app(pub).post_json(
|
1477 |
1523 |
sign_uri('/api/forms/test/%s/' % formdata.id, user=local_user),
|
1478 |
1524 |
{'data': {'0': 'bar@localhost'}},
|
1479 |
1525 |
status=403)
|
... | ... | |
1483 |
1529 |
wfedit.by = [local_user.roles[0]]
|
1484 |
1530 |
workflow.store()
|
1485 |
1531 |
|
1486 |
|
resp = get_app(pub).post_json(
|
|
1532 |
get_app(pub).post_json(
|
1487 |
1533 |
sign_uri('/api/forms/test/%s/' % formdata.id, user=local_user),
|
1488 |
1534 |
{'data': {'0': 'bar2@localhost'}},
|
1489 |
1535 |
status=200)
|