0002-workflow-add-target-mode-id-to-external-and-edit-car.patch
tests/admin_pages/test_workflow.py | ||
---|---|---|
1613 | 1613 |
resp.forms[0]['trigger_id'] = 'action:%s' % trigger.identifier |
1614 | 1614 |
resp = resp.forms[0].submit('submit').follow().follow() |
1615 | 1615 |
assert 'External workflow (action "Global action" on external)' in resp.text |
1616 |
assert Workflow.get(workflow.id).possible_status[0].items[0].target_mode == 'all' |
|
1617 |
assert Workflow.get(workflow.id).possible_status[0].items[0].target_id is None |
|
1618 | ||
1619 |
resp = app.get('/backoffice/workflows/%s/status/%s/items/1/' % (workflow.id, st.id)) |
|
1620 |
resp.forms[0]['target_mode'] = 'manual' |
|
1621 |
resp.forms[0]['target_id$type'] = 'template' |
|
1622 |
resp.forms[0]['target_id$value_template'] = '{{ form_var_plop_id }}' |
|
1623 |
resp = resp.forms[0].submit('submit') |
|
1624 |
assert Workflow.get(workflow.id).possible_status[0].items[0].target_mode == 'manual' |
|
1625 |
assert Workflow.get(workflow.id).possible_status[0].items[0].target_id == '{{ form_var_plop_id }}' |
|
1616 | 1626 | |
1617 | 1627 |
trigger.identifier = 'another_test' |
1618 | 1628 |
wf.store() |
... | ... | |
1659 | 1669 |
resp.forms[0]['mappings$element0$field_id'] = '1' |
1660 | 1670 |
resp = resp.forms[0].submit('submit').follow() |
1661 | 1671 |
assert 'Edit Card Data (not configured)' not in resp.text |
1672 |
assert Workflow.get(wf.id).possible_status[0].items[0].target_mode == 'all' |
|
1673 |
assert Workflow.get(wf.id).possible_status[0].items[0].target_id is None |
|
1674 | ||
1675 |
resp = app.get('/backoffice/workflows/%s/status/%s/items/1/' % (wf.id, st.id)) |
|
1676 |
resp.forms[0]['target_mode'] = 'manual' |
|
1677 |
resp.forms[0]['target_id$type'] = 'template' |
|
1678 |
resp.forms[0]['target_id$value_template'] = '{{ form_var_plop_id }}' |
|
1679 |
resp = resp.forms[0].submit('submit') |
|
1680 |
assert Workflow.get(wf.id).possible_status[0].items[0].target_mode == 'manual' |
|
1681 |
assert Workflow.get(wf.id).possible_status[0].items[0].target_id == '{{ form_var_plop_id }}' |
|
1662 | 1682 | |
1663 | 1683 | |
1664 | 1684 |
def test_workflows_criticality_levels(pub): |
wcs/wf/edit_carddata.py | ||
---|---|---|
35 | 35 |
return ExternalWorkflowGlobalAction.is_available() |
36 | 36 | |
37 | 37 |
def get_parameters(self): |
38 |
return ('formdef_slug', 'mappings', 'condition') |
|
38 |
return ('formdef_slug', 'target_mode', 'target_id', 'mappings', 'condition')
|
|
39 | 39 | |
40 | 40 |
@property |
41 | 41 |
def slug(self): |
wcs/wf/external_workflow.py | ||
---|---|---|
17 | 17 |
from quixote import get_publisher |
18 | 18 | |
19 | 19 |
from wcs.qommon import _ |
20 |
from wcs.qommon.form import SingleSelectWidget |
|
20 |
from wcs.qommon.form import SingleSelectWidget, ComputedExpressionWidget
|
|
21 | 21 | |
22 | 22 |
from wcs.logged_errors import LoggedError |
23 | 23 |
from wcs.workflows import WorkflowStatusItem, perform_items, register_item_class |
... | ... | |
33 | 33 |
category = 'formdata-action' |
34 | 34 | |
35 | 35 |
slug = None |
36 |
target_mode = None |
|
37 |
target_id = None |
|
36 | 38 |
trigger_id = None |
37 | 39 | |
38 | 40 |
@classmethod |
... | ... | |
67 | 69 |
return trigger |
68 | 70 | |
69 | 71 |
def add_parameters_widgets(self, form, parameters, prefix='', formdef=None): |
70 |
super(ExternalWorkflowGlobalAction, self).add_parameters_widgets( |
|
71 |
form, parameters, prefix=prefix, formdef=formdef) |
|
72 |
super().add_parameters_widgets(form, parameters, prefix=prefix, formdef=formdef) |
|
72 | 73 | |
73 | 74 |
if 'slug' in parameters: |
74 | 75 |
objects = [(None, '---', '')] |
... | ... | |
88 | 89 |
required=True, |
89 | 90 |
options=objects) |
90 | 91 | |
92 |
if 'target_mode' in parameters: |
|
93 |
target_modes = [('all', _('Automatic'), 'all'), ('manual', _('Manual'), 'manual')] |
|
94 |
form.add(SingleSelectWidget, '%starget_mode' % prefix, |
|
95 |
title=_('Targeting'), |
|
96 |
value=self.target_mode or 'all', |
|
97 |
required=True, |
|
98 |
options=target_modes, |
|
99 |
attrs={'data-dynamic-display-parent': 'true'}) |
|
100 | ||
101 |
if 'target_id' in parameters: |
|
102 |
form.add(ComputedExpressionWidget, '%starget_id' % prefix, |
|
103 |
value=self.target_id, |
|
104 |
required=False, |
|
105 |
attrs={'data-dynamic-display-child-of': 'target_mode', |
|
106 |
'data-dynamic-display-value': 'manual'}) |
|
107 | ||
91 | 108 |
if 'trigger_id' in parameters and form.get('%sslug' % prefix): |
92 | 109 |
object_def = self.get_object_def(form.get('%sslug' % prefix)) |
93 | 110 |
if not object_def: |
... | ... | |
117 | 134 |
yield from formdata.iter_target_datas(objectdef=objectdef, object_type=self.slug, status_item=self) |
118 | 135 | |
119 | 136 |
def get_parameters(self): |
120 |
return ('slug', 'trigger_id', 'condition') |
|
137 |
return ('slug', 'target_mode', 'target_id', 'trigger_id', 'condition')
|
|
121 | 138 | |
122 | 139 |
def perform(self, formdata): |
123 | 140 |
objectdef = self.get_object_def() |
124 |
- |