Projet

Général

Profil

0001-workflows-set-bo-fields-to-empty-value-only-if-value.patch

Thomas Noël, 15 juillet 2020 17:36

Télécharger (2,18 ko)

Voir les différences:

Subject: [PATCH] workflows: set bo fields to empty value only if value before
 compute is empty (#45135)

 tests/test_workflows.py     |  5 +++++
 wcs/wf/backoffice_fields.py | 17 ++++++++---------
 2 files changed, 13 insertions(+), 9 deletions(-)
tests/test_workflows.py
3784 3784
    formdata = formdef.data_class().get(formdata.id)
3785 3785
    assert formdata.data['bo1'] is None
3786 3786

  
3787
    item.fields = [{'field_id': 'bo1', 'value': '=""'}]
3788
    item.perform(formdata)
3789
    formdata = formdef.data_class().get(formdata.id)
3790
    assert formdata.data['bo1'] == ''
3791

  
3787 3792
    assert LoggedError.count() == 0
3788 3793

  
3789 3794
    item.fields = [{'field_id': 'bo1', 'value': '= ~ invalid python ~'}]
wcs/wf/backoffice_fields.py
119 119
            except IndexError:
120 120
                continue
121 121

  
122
            try:
123
                new_value = self.compute(field['value'], raises=True,
124
                                         formdata=formdata, status_item=self)
125
            except:
126
                continue
127

  
128
            if new_value == '':
129
                # assign empty strings as None, as that will work for all field
130
                # types
122
            if field['value'] == '':
123
                # assign empty strings as None, as that will work for all field types
131 124
                new_value = None
125
            else:
126
                try:
127
                    new_value = self.compute(field['value'], raises=True,
128
                                             formdata=formdata, status_item=self)
129
                except:
130
                    continue
132 131

  
133 132
            if formdef_field.convert_value_from_anything:
134 133
                try:
135
-