From 8ac69b79dcdf4210acaab760f552a61d46cc9fa2 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Tue, 10 Jan 2023 11:09:31 +0100 Subject: [PATCH] testdef: forbid test creation if form has deprecated fields (#73331) --- tests/admin_pages/test_tests.py | 17 +++++++++++++++++ wcs/admin/tests.py | 4 ++++ wcs/templates/wcs/backoffice/tests.html | 8 +++++++- wcs/testdef.py | 10 +++++++++- 4 files changed, 37 insertions(+), 2 deletions(-) diff --git a/tests/admin_pages/test_tests.py b/tests/admin_pages/test_tests.py index 513fedf96..3f3b65089 100644 --- a/tests/admin_pages/test_tests.py +++ b/tests/admin_pages/test_tests.py @@ -159,6 +159,23 @@ def test_tests_page_formdefs_isolation(pub): assert resp.form['formdata_id'].options[0][2] == '2-1 - Unknown User' +def test_tests_page_deprecated_fields(pub): + formdef = FormDef() + formdef.name = 'test title' + formdef.fields = [ + fields.TableField(id='1', label='Table', type='table'), + ] + formdef.store() + + create_superuser(pub) + app = login(get_app(pub)) + + resp = app.get(formdef.get_admin_url()) + resp = resp.click('Tests') + assert 'Run' not in resp.text + assert 'deprecated fields' in resp.text + + def test_tests_import_export(pub): user = create_superuser(pub) diff --git a/wcs/admin/tests.py b/wcs/admin/tests.py index 270eab9c5..d1ccb271b 100644 --- a/wcs/admin/tests.py +++ b/wcs/admin/tests.py @@ -117,6 +117,10 @@ class TestsDirectory(Directory): [Equal('object_type', self.objectdef.get_table_name()), Equal('object_id', self.objectdef.id)] ), 'formdata': self.objectdef.data_class().select([StrictNotEqual('status', 'draft')]), + 'has_deprecated_fields': any( + x.type in ('table', 'table-select', 'tablerows', 'ranked-items') + for x in self.objectdef.fields + ), } return template.QommonTemplateResponse(templates=['wcs/backoffice/tests.html'], context=context) diff --git a/wcs/templates/wcs/backoffice/tests.html b/wcs/templates/wcs/backoffice/tests.html index 2fc0084b0..9f525eaba 100644 --- a/wcs/templates/wcs/backoffice/tests.html +++ b/wcs/templates/wcs/backoffice/tests.html @@ -7,7 +7,7 @@ {% if testdefs %} {% trans "Run tests" %} {% endif %} - {% if formdata %} + {% if formdata and not has_deprecated_fields %} {% trans "New" %} {% endif %} {% endblock %} @@ -16,6 +16,12 @@

{% trans "Test form data" %}

+ {% if has_deprecated_fields %} +
+

{% trans "Tests cannot be created because this form has deprecated fields." %}

+
+ {% endif %} + {% if not formdata %}

{% trans "Tests cannot be created because there are no completed forms." %}

diff --git a/wcs/testdef.py b/wcs/testdef.py index 5b523ec2c..82d035821 100644 --- a/wcs/testdef.py +++ b/wcs/testdef.py @@ -162,7 +162,15 @@ class TestDef(sql.TestDef): def fill_page_fields(self, fields, page, formdata, objectdef): computed_fields = [] for field in fields: - if field.type in ('subtitle', 'title', 'comment', 'computed'): + if field.type in ( + 'subtitle', + 'title', + 'comment', + 'table', + 'table-select', + 'tablerows', + 'ranked-items', + ): continue if not field.is_visible(formdata.data, objectdef): -- 2.39.0