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