8 |
8 |
|
9 |
9 |
from wcs import fields
|
10 |
10 |
from wcs.api_utils import sign_url
|
|
11 |
from wcs.carddef import CardDef
|
11 |
12 |
from wcs.formdef import FormDef
|
12 |
13 |
from wcs.qommon.http_request import HTTPRequest
|
13 |
14 |
from wcs.workflows import Workflow, WorkflowBackofficeFieldsFormDef
|
... | ... | |
1632 |
1633 |
assert live_resp.json == {'result': {'3': {'visible': True, 'content': 'test9@invalid'}}}
|
1633 |
1634 |
|
1634 |
1635 |
|
|
1636 |
def test_backoffice_submission_user_selection_then_card_data_source(pub):
|
|
1637 |
pub.session_manager.session_class.wipe()
|
|
1638 |
|
|
1639 |
user = create_user(pub)
|
|
1640 |
|
|
1641 |
for i in range(10):
|
|
1642 |
random_user = pub.user_class()
|
|
1643 |
random_user.name = 'random user %s' % i
|
|
1644 |
random_user.email = 'test%s@invalid' % i
|
|
1645 |
random_user.store()
|
|
1646 |
|
|
1647 |
CardDef.wipe()
|
|
1648 |
carddef = CardDef()
|
|
1649 |
carddef.name = 'foo'
|
|
1650 |
carddef.fields = []
|
|
1651 |
carddef.digest_templates = {'default': 'card {{ form_number }}'}
|
|
1652 |
carddef.backoffice_submission_roles = user.roles
|
|
1653 |
carddef.workflow_roles = {'_editor': user.roles[0]}
|
|
1654 |
carddef.user_support = 'optional'
|
|
1655 |
carddef.store()
|
|
1656 |
|
|
1657 |
carddata = carddef.data_class()()
|
|
1658 |
carddata.data = {}
|
|
1659 |
carddata.user_id = user.id
|
|
1660 |
carddata.just_created()
|
|
1661 |
carddata.store()
|
|
1662 |
|
|
1663 |
for i in range(3):
|
|
1664 |
carddata = carddef.data_class()()
|
|
1665 |
carddata.data = {}
|
|
1666 |
carddata.user_id = random_user.id
|
|
1667 |
carddata.just_created()
|
|
1668 |
carddata.store()
|
|
1669 |
|
|
1670 |
pub.custom_view_class.wipe()
|
|
1671 |
custom_view = pub.custom_view_class()
|
|
1672 |
custom_view.title = 'shared custom test view'
|
|
1673 |
custom_view.formdef = carddef
|
|
1674 |
custom_view.visibility = 'datasource'
|
|
1675 |
custom_view.columns = {'list': [{'id': 'id'}]}
|
|
1676 |
custom_view.filters = {
|
|
1677 |
'filter-user': 'on',
|
|
1678 |
'filter-user-value': '__current__',
|
|
1679 |
}
|
|
1680 |
custom_view.store()
|
|
1681 |
|
|
1682 |
Workflow.wipe()
|
|
1683 |
workflow = Workflow(name='wfedit')
|
|
1684 |
st1 = workflow.add_status('Status1')
|
|
1685 |
wfedit = st1.add_action('editable', id='_wfedit')
|
|
1686 |
wfedit.by = [user.roles[0]]
|
|
1687 |
workflow.store()
|
|
1688 |
|
|
1689 |
FormDef.wipe()
|
|
1690 |
formdef = FormDef()
|
|
1691 |
formdef.name = 'form title'
|
|
1692 |
formdef.fields = [
|
|
1693 |
fields.PageField(id='1', label='1st page', type='page'),
|
|
1694 |
fields.PageField(id='2', label='2nd page', type='page'),
|
|
1695 |
fields.ItemField(
|
|
1696 |
id='3',
|
|
1697 |
label='Test',
|
|
1698 |
type='item',
|
|
1699 |
data_source={'type': 'carddef:foo:%s' % custom_view.slug, 'value': ''},
|
|
1700 |
),
|
|
1701 |
]
|
|
1702 |
formdef.backoffice_submission_roles = user.roles[:]
|
|
1703 |
formdef.workflow_roles = {'_receiver': 1}
|
|
1704 |
formdef.workflow_id = workflow.id
|
|
1705 |
formdef.store()
|
|
1706 |
formdef.data_class().wipe()
|
|
1707 |
|
|
1708 |
app = login(get_app(pub))
|
|
1709 |
resp = app.get('/backoffice/submission/%s/' % formdef.url_name)
|
|
1710 |
|
|
1711 |
resp = resp.form.submit('submit') # -> 2nd page
|
|
1712 |
# check the field doesn't propose cards linked to agent
|
|
1713 |
assert resp.form['f3'].options == [('', False, '---')]
|
|
1714 |
|
|
1715 |
formdef.data_class().wipe()
|
|
1716 |
resp = app.get('/backoffice/submission/%s/' % formdef.url_name)
|
|
1717 |
resp.form['user_id'] = str(random_user.id) # happens via javascript
|
|
1718 |
resp = resp.form.submit('submit') # -> 2nd page
|
|
1719 |
# check three cards are proposed
|
|
1720 |
assert len(resp.form['f3'].options) == 3
|
|
1721 |
resp = resp.form.submit('submit') # -> validation page
|
|
1722 |
resp = resp.form.submit('submit') # -> submit
|
|
1723 |
assert formdef.data_class().count() == 1
|
|
1724 |
formdata = formdef.data_class().select()[0]
|
|
1725 |
assert formdata.data['3_display'] == 'card 2'
|
|
1726 |
|
|
1727 |
# check it's also ok during edition
|
|
1728 |
resp = app.get(formdata.get_backoffice_url())
|
|
1729 |
resp = resp.form.submit('button_wfedit')
|
|
1730 |
resp = resp.follow()
|
|
1731 |
resp = resp.form.submit('submit') # page 2
|
|
1732 |
assert len(resp.form['f3'].options) == 3
|
|
1733 |
|
|
1734 |
|
1635 |
1735 |
def test_backoffice_submission_sidebar_lateral_block(pub):
|
1636 |
1736 |
user = create_user(pub)
|
1637 |
1737 |
|