Projet

Général

Profil

0002-workflow-add-target-mode-id-to-external-and-edit-car.patch

Lauréline Guérin, 08 décembre 2020 16:38

Télécharger (5,84 ko)

Voir les différences:

Subject: [PATCH 2/4] workflow: add target mode/id to external and edit card
 items (#45653)

 tests/admin_pages/test_workflow.py | 20 ++++++++++++++++++++
 wcs/wf/edit_carddata.py            |  2 +-
 wcs/wf/external_workflow.py        | 25 +++++++++++++++++++++----
 3 files changed, 42 insertions(+), 5 deletions(-)
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
-