testdef: forbid test creation if form has deprecated fields (#73331) #77
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
{% if testdefs %}
|
||||
<a href="run">{% trans "Run tests" %}</a>
|
||||
{% endif %}
|
||||
{% if formdata %}
|
||||
{% if formdata and not has_deprecated_fields %}
|
||||
<a href="new" rel="popup">{% trans "New" %}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
@ -16,6 +16,12 @@
|
|||
<div class="section">
|
||||
<h3>{% trans "Test form data" %}</h3>
|
||||
|
||||
{% if has_deprecated_fields %}
|
||||
<div class="warningnotice">
|
||||
<p>{% trans "Tests cannot be created because this form has deprecated fields." %}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if not formdata %}
|
||||
<div class="infonotice">
|
||||
<p>{% trans "Tests cannot be created because there are no completed forms." %}</p>
|
||||
|
|
|
@ -162,7 +162,16 @@ class TestDef(sql.TestDef):
|
|||
def fill_page_fields(self, fields, page, formdata, objectdef):
|
||||
self.handle_computed_fields(fields, formdata)
|
||||
for field in fields:
|
||||
if field.key in ('subtitle', 'title', 'comment', 'computed'):
|
||||
if field.key in (
|
||||
'subtitle',
|
||||
'title',
|
||||
'comment',
|
||||
'computed',
|
||||
'table',
|
||||
'table-select',
|
||||
'tablerows',
|
||||
'ranked-items',
|
||||
):
|
||||
continue
|
||||
|
||||
if not field.is_visible(formdata.data, objectdef):
|
||||
|
|
Loading…
Reference in New Issue
Il y aurait moyen d'ajouter un attribut
deprecated = True/False
sur les champs, et l'utiliser ici + wcs/testdef.py plus bas + wcs/backoffice/deprecations.py, j'ai peur autrement que dans une prochaine dépréciation on oublie d'actualiser un côté.Mais ici ce qui justifie qu'on interdise de créer des tests ce n'est pas vraiment que les champs soient dépréciés, c'est qu'ils l'aient été avant l'introduction des tests.
Si demain on déprécie un nouveau type de champ on a pas envie que ça ait une incidence sur les tests existants non ? (ça irait à l'encontre du principe de la dépréciation, laisser le temps de gérer la migration en permettant de continuer une utilisation normale)
ok ainsi alors.