backoffice: display card models usage on workflow page (#52648)
This commit is contained in:
parent
cfd832ee69
commit
653fcaf7e3
|
@ -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)
|
||||
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue