Projet

Général

Profil

0001-workflows-add-support-for-assigning-to-workflow-item.patch

Frédéric Péters, 24 août 2016 14:04

Télécharger (5,25 ko)

Voir les différences:

Subject: [PATCH] workflows: add support for assigning to workflow item/items
 field (#12905)

 tests/test_workflows.py     | 104 +++++++++++++++++++++++++++++++++++++++++++-
 wcs/wf/backoffice_fields.py |   8 ++++
 2 files changed, 111 insertions(+), 1 deletion(-)
tests/test_workflows.py
14 14

  
15 15
from wcs.formdef import FormDef
16 16
from wcs import sessions
17
from wcs.fields import StringField, DateField, MapField, FileField
17
from wcs.fields import StringField, DateField, MapField, FileField, ItemField, ItemsField
18 18
from wcs.roles import Role
19 19
from wcs.workflows import (Workflow, WorkflowStatusItem,
20 20
        SendmailWorkflowStatusItem, SendSMSWorkflowStatusItem,
......
1781 1781
    formdata = formdef.data_class().get(formdata.id)
1782 1782
    assert not 'bo1' in formdata.data
1783 1783
    assert not 'bo3' in formdata.data
1784

  
1785
def test_set_backoffice_field_item(pub):
1786
    Workflow.wipe()
1787
    wf = Workflow(name='xxx')
1788
    wf.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(wf)
1789
    st1 = wf.add_status('Status1')
1790
    wf.backoffice_fields_formdef.fields = [
1791
        ItemField(id='bo1', label='1st backoffice field',
1792
            type='item', varname='backoffice_item',
1793
            items=['a', 'b', 'c']),
1794
    ]
1795
    wf.store()
1796

  
1797
    formdef = FormDef()
1798
    formdef.name = 'baz'
1799
    formdef.fields = []
1800
    formdef.workflow_id = wf.id
1801
    formdef.store()
1802

  
1803
    formdata = formdef.data_class()()
1804
    formdata.data = {}
1805
    formdata.just_created()
1806
    formdata.store()
1807

  
1808
    item = SetBackofficeFieldsWorkflowStatusItem()
1809
    item.parent = st1
1810
    item.fields = [{'field_id': 'bo1', 'value': 'a'}]
1811
    item.perform(formdata)
1812

  
1813
    formdata = formdef.data_class().get(formdata.id)
1814
    assert formdata.data['bo1'] == 'a'
1815
    assert formdata.data['bo1_display'] == 'a'
1816

  
1817
    datasource = {'type': 'formula',
1818
            'value': repr([('a', 'aa'), ('b', 'bb'), ('c', 'cc')])}
1819

  
1820
    wf.backoffice_fields_formdef.fields = [
1821
        ItemField(id='bo1', label='1st backoffice field',
1822
            type='item', varname='backoffice_item',
1823
            data_source=datasource),
1824
    ]
1825
    wf.store()
1826

  
1827
    item = SetBackofficeFieldsWorkflowStatusItem()
1828
    item.parent = st1
1829
    item.fields = [{'field_id': 'bo1', 'value': 'a'}]
1830
    item.perform(formdata)
1831

  
1832
    formdata = formdef.data_class().get(formdata.id)
1833
    assert formdata.data['bo1'] == 'a'
1834
    assert formdata.data['bo1_display'] == 'aa'
1835

  
1836
def test_set_backoffice_field_items(pub):
1837
    Workflow.wipe()
1838
    wf = Workflow(name='xxx')
1839
    wf.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(wf)
1840
    st1 = wf.add_status('Status1')
1841
    wf.backoffice_fields_formdef.fields = [
1842
        ItemsField(id='bo1', label='1st backoffice field',
1843
            type='items', varname='backoffice_item',
1844
            items=['a', 'b', 'c']),
1845
    ]
1846
    wf.store()
1847

  
1848
    formdef = FormDef()
1849
    formdef.name = 'baz'
1850
    formdef.fields = []
1851
    formdef.workflow_id = wf.id
1852
    formdef.store()
1853

  
1854
    formdata = formdef.data_class()()
1855
    formdata.data = {}
1856
    formdata.just_created()
1857
    formdata.store()
1858

  
1859
    item = SetBackofficeFieldsWorkflowStatusItem()
1860
    item.parent = st1
1861
    item.fields = [{'field_id': 'bo1', 'value': "=['a', 'b']"}]
1862
    item.perform(formdata)
1863

  
1864
    formdata = formdef.data_class().get(formdata.id)
1865
    assert formdata.data['bo1'] == ['a', 'b']
1866
    assert formdata.data['bo1_display'] == 'a, b'
1867

  
1868
    datasource = {'type': 'formula',
1869
            'value': repr([('a', 'aa'), ('b', 'bb'), ('c', 'cc')])}
1870

  
1871
    wf.backoffice_fields_formdef.fields = [
1872
        ItemsField(id='bo1', label='1st backoffice field',
1873
            type='items', varname='backoffice_item',
1874
            data_source=datasource),
1875
    ]
1876
    wf.store()
1877

  
1878
    item = SetBackofficeFieldsWorkflowStatusItem()
1879
    item.parent = st1
1880
    item.fields = [{'field_id': 'bo1', 'value': "=['a', 'b']"}]
1881
    item.perform(formdata)
1882

  
1883
    formdata = formdef.data_class().get(formdata.id)
1884
    assert formdata.data['bo1'] == ['a', 'b']
1885
    assert formdata.data['bo1_display'] == 'aa, bb'
wcs/wf/backoffice_fields.py
131 131
                continue
132 132

  
133 133
            formdata.data['%s' % field['field_id']] = new_value
134
            if formdef_field.store_display_value:
135
                display_value = formdef_field.store_display_value(
136
                        formdata.data, formdef_field.id)
137
                if display_value:
138
                    formdata.data['%s_display' % formdef_field.id] = display_value
139
                elif d.has_key('%s_display' % formdef_field.id):
140
                    del formdata.data['%s_display' % formdef_field.id]
141

  
134 142
        formdata.store()
135 143

  
136 144
    def fields_export_to_xml(self, item, charset, include_id=False):
137
-