backoffice: display card models usage on workflow page (#52648)

This commit is contained in:
Frédéric Péters 2021-04-03 15:23:26 +02:00
parent cfd832ee69
commit 653fcaf7e3
3 changed files with 60 additions and 7 deletions

View File

@ -301,6 +301,44 @@ def test_workflows_delete(pub):
assert Workflow.count() == 0
def test_workflows_usage(pub):
Workflow.wipe()
workflow = Workflow(name='foo')
workflow.store()
create_superuser(pub)
app = login(get_app(pub))
resp = app.get('/backoffice/workflows/%s/' % workflow.id)
assert 'Usage' not in resp.text
formdef = FormDef()
formdef.name = 'Form title'
formdef.workflow = workflow
formdef.fields = []
formdef.store()
resp = app.get('/backoffice/workflows/%s/' % workflow.id)
assert 'Usage' in resp.text
assert '/forms/%s/' % formdef.id in resp.text
carddef = CardDef()
carddef.name = 'Card title'
carddef.workflow = workflow
carddef.fields = []
carddef.store()
resp = app.get('/backoffice/workflows/%s/' % workflow.id)
assert 'Usage' in resp.text
assert '/cards/%s/' % carddef.id in resp.text
formdef.remove_self()
resp = app.get('/backoffice/workflows/%s/' % workflow.id)
assert 'Usage' in resp.text
assert '/cards/%s/' % carddef.id in resp.text
def test_workflows_export_import(pub):
create_superuser(pub)

View File

@ -150,15 +150,28 @@
</div>
{% endif %}
{% with formdefs=workflow.formdefs %}
{% with formdefs=workflow.formdefs carddefs=workflow.carddefs %}
{% if formdefs or carddefs %}
<div class="section">
<h3>{% trans "Usage" %}</h3>
<div>
{% if formdefs %}
<div class="bo-block">
<h3>{% trans "Forms" %}</h3>
<p>{% trans "This workflow is used for the following forms:" %}
<ul class="objects-list single-links">
{% for formdef in formdefs %}
<a href="../../forms/{{ formdef.id }}">{{ formdef.name }}</a>{% if not forloop.last %}, {% endif %}
<li><a href="{{ formdef.get_admin_url }}">{{ formdef.name }}</a></li>
{% endfor %}
</p>
</ul>
{% endif %}
{% if carddefs %}
<p>{% trans "This workflow is used for the following card models:" %}
<ul class="objects-list single-links">
{% for carddef in carddefs %}
<li><a href="{{ carddef.get_admin_url }}">{{ carddef.name }}</a></li>
{% endfor %}
</ul>
{% endif %}
</div>
</div>
{% endif %}
{% endwith %}

View File

@ -913,10 +913,12 @@ class Workflow(StorableObject):
return self.is_default() or super().is_readonly()
def formdefs(self, **kwargs):
return list(FormDef.select(lambda x: x.workflow_id == self.id, **kwargs))
order_by = kwargs.pop('order_by', 'name')
return list(FormDef.select(lambda x: x.workflow_id == self.id, order_by=order_by, **kwargs))
def carddefs(self, **kwargs):
return list(CardDef.select(lambda x: x.workflow_id == self.id, **kwargs))
order_by = kwargs.pop('order_by', 'name')
return list(CardDef.select(lambda x: x.workflow_id == self.id, order_by=order_by, **kwargs))
class XmlSerialisable: