diff --git a/tests/backoffice_pages/test_all.py b/tests/backoffice_pages/test_all.py index f7a1d06b8..0657c4f1e 100644 --- a/tests/backoffice_pages/test_all.py +++ b/tests/backoffice_pages/test_all.py @@ -7248,264 +7248,6 @@ def test_backoffice_after_submit_location(pub): assert resp.location == 'http://example.net/backoffice/management/form-title/%s/#' % formdata.id -def test_backoffice_custom_view(pub): - create_superuser(pub) - create_environment(pub) - - app = login(get_app(pub)) - resp = app.get('/backoffice/management/form-title/') - assert resp.text.count('User Label') == 1 - assert resp.text.count('User Label') == 0 - assert resp.text.count('User Label') == 0 - assert resp.text.count('User Label') == 0 - assert resp.text.count('User Label') == 0 - - resp.forms['save-custom-view']['title'] = 'custom test view' - assert 'visibility' not in resp.forms['save-custom-view'].fields - resp = resp.forms['save-custom-view'].submit() - assert resp.location.endswith('/user-custom-test-view/') - resp = resp.follow() - assert resp.text.count('User Label') == 0 - - # second agent - agent2 = pub.user_class(name='agent2') - agent2.roles = [formdef.workflow_roles['_receiver']] - agent2.store() - - account = PasswordAccount(id='agent2') - account.set_password('agent2') - account.user_id = agent2.id - account.store() - - app = login(get_app(pub), username='agent2', password='agent2') - resp = app.get('/backoffice/management/form-title/') - assert 'custom test view' not in resp - - # shared custom view - app = login(get_app(pub)) - resp = app.get('/backoffice/management/form-title/') - resp = resp.forms['listing-settings'].submit() - resp.forms['save-custom-view']['title'] = 'shared view' - resp.forms['save-custom-view']['visibility'] = 'any' - resp = resp.forms['save-custom-view'].submit() - - app = login(get_app(pub), username='agent2', password='agent2') - resp = app.get('/backoffice/management/form-title/') - resp = resp.click('shared view') - - # don't allow a second "any" view with same slug - app = login(get_app(pub)) - resp = app.get('/backoffice/management/form-title/') - resp = resp.forms['listing-settings'].submit() - resp.forms['save-custom-view']['title'] = 'shared view' - resp.forms['save-custom-view']['visibility'] = 'any' - resp = resp.forms['save-custom-view'].submit() - assert set([(x.slug, x.visibility) for x in get_publisher().custom_view_class.select()]) == set( - [('custom-test-view', 'owner'), ('shared-view', 'any'), ('shared-view-2', 'any')]) - - -def test_backoffice_missing_custom_view(pub): - create_superuser(pub) - create_environment(pub, set_receiver=False) - app = login(get_app(pub)) - resp = app.get('/backoffice/management/form-title/user-plop/') - assert resp.location == 'http://example.net/backoffice/management/form-title/' - resp = resp.follow() - assert 'A missing or invalid custom view was referenced' in resp - - resp = app.get('/backoffice/management/form-title/user-plop/1/') - assert resp.location == 'http://example.net/backoffice/management/form-title/1/' - - resp = app.get('/backoffice/management/form-title/user-plop/1/?plop') - assert resp.location == 'http://example.net/backoffice/management/form-title/1/?plop' - - -def test_carddata_custom_view(pub, studio): - CardDef.wipe() - user = create_user(pub) - app = login(get_app(pub)) - carddef = CardDef() - carddef.name = 'foo' - carddef.fields = [ - fields.StringField(id='1', label='Test', type='string', varname='foo'), - ] - carddef.backoffice_submission_roles = user.roles - carddef.workflow_roles = {'_editor': user.roles[0]} - carddef.store() - carddef.data_class().wipe() - - for i in range(50): - carddata = carddef.data_class()() - carddata.data = {'1': 'FOO %s' % i} - carddata.just_created() - carddata.store() - - resp = app.get('/backoffice/data/foo/') - if pub.is_using_postgresql(): - assert resp.text.count('User Label') == 1 - assert resp.text.count('User Label') == 1 + assert resp.text.count('User Label') == 0 + assert resp.text.count('User Label') == 0 + assert resp.text.count('User Label') == 0 + + resp.forms['save-custom-view']['title'] = 'custom test view' + assert 'visibility' not in resp.forms['save-custom-view'].fields + resp = resp.forms['save-custom-view'].submit() + assert resp.location.endswith('/user-custom-test-view/') + resp = resp.follow() + assert resp.text.count('User Label') == 0 + + # second agent + agent2 = pub.user_class(name='agent2') + agent2.roles = [formdef.workflow_roles['_receiver']] + agent2.store() + + account = PasswordAccount(id='agent2') + account.set_password('agent2') + account.user_id = agent2.id + account.store() + + app = login(get_app(pub), username='agent2', password='agent2') + resp = app.get('/backoffice/management/form-title/') + assert 'custom test view' not in resp + + # shared custom view + app = login(get_app(pub)) + resp = app.get('/backoffice/management/form-title/') + resp = resp.forms['listing-settings'].submit() + resp.forms['save-custom-view']['title'] = 'shared view' + resp.forms['save-custom-view']['visibility'] = 'any' + resp = resp.forms['save-custom-view'].submit() + + app = login(get_app(pub), username='agent2', password='agent2') + resp = app.get('/backoffice/management/form-title/') + resp = resp.click('shared view') + + # don't allow a second "any" view with same slug + app = login(get_app(pub)) + resp = app.get('/backoffice/management/form-title/') + resp = resp.forms['listing-settings'].submit() + resp.forms['save-custom-view']['title'] = 'shared view' + resp.forms['save-custom-view']['visibility'] = 'any' + resp = resp.forms['save-custom-view'].submit() + assert set([(x.slug, x.visibility) for x in get_publisher().custom_view_class.select()]) == set( + [('custom-test-view', 'owner'), ('shared-view', 'any'), ('shared-view-2', 'any')]) + + +def test_backoffice_missing_custom_view(pub): + create_superuser(pub) + + FormDef.wipe() + pub.custom_view_class.wipe() + formdef = FormDef() + formdef.name = 'form title' + formdef.fields = [] + formdef.store() + + app = login(get_app(pub)) + resp = app.get('/backoffice/management/form-title/user-plop/') + assert resp.location == 'http://example.net/backoffice/management/form-title/' + resp = resp.follow() + assert 'A missing or invalid custom view was referenced' in resp + + resp = app.get('/backoffice/management/form-title/user-plop/1/') + assert resp.location == 'http://example.net/backoffice/management/form-title/1/' + + resp = app.get('/backoffice/management/form-title/user-plop/1/?plop') + assert resp.location == 'http://example.net/backoffice/management/form-title/1/?plop' + + +def test_carddata_custom_view(pub, studio): + user = create_user(pub) + + CardDef.wipe() + pub.custom_view_class.wipe() + carddef = CardDef() + carddef.name = 'foo' + carddef.fields = [ + fields.StringField(id='1', label='Test', type='string', varname='foo'), + ] + carddef.backoffice_submission_roles = user.roles + carddef.workflow_roles = {'_editor': user.roles[0]} + carddef.store() + + app = login(get_app(pub)) + resp = app.get('/backoffice/data/foo/') + resp = resp.forms['listing-settings'].submit() + resp.forms['save-custom-view']['title'] = 'card view' + resp = resp.forms['save-custom-view'].submit() + assert resp.location.endswith('/user-card-view/') + resp = resp.follow() + + +def test_backoffice_custom_view_keep_filters(pub): + user = create_superuser(pub) + + datasource = { + 'type': 'formula', + 'value': repr([('A', 'aa'), ('B', 'bb'), ('C', 'cc')]) + } + FormDef.wipe() + pub.custom_view_class.wipe() + formdef = FormDef() + formdef.name = 'form title' + formdef.fields = [ + fields.StringField( + id='1', label='1st field', type='string', + display_locations=['validation', 'summary', 'listings']), + fields.ItemField( + id='2', label='2nd field', type='item', + data_source=datasource, varname='foo'), + ] + formdef.store() + + custom_view = pub.custom_view_class() + custom_view.title = 'custom test view' + custom_view.formdef = formdef + custom_view.visibility = 'owner' + custom_view.columns = {'list': [{'id': '1'}]} + custom_view.filters = {'filter-1': True, 'filter-1-value': 'baz'} + custom_view.user = user + custom_view.store() + + app = login(get_app(pub)) + resp = app.get('/backoffice/management/form-title/user-custom-test-view/') + assert 'filter-1-value' in resp.forms['listing-settings'].fields + assert 'filter-2-value' not in resp.forms['listing-settings'].fields + + resp = app.get('/backoffice/management/form-title/user-custom-test-view/?filter-foo=A') + assert 'filter-1-value' not in resp.forms['listing-settings'].fields + assert 'filter-2-value' in resp.forms['listing-settings'].fields + + resp = app.get('/backoffice/management/form-title/user-custom-test-view/?filter-foo=A&keep-view-filters=on') + assert 'filter-1-value' in resp.forms['listing-settings'].fields + assert 'filter-2-value' in resp.forms['listing-settings'].fields