0001-workflows-set-bo-fields-to-empty-value-only-if-value.patch
tests/test_workflows.py | ||
---|---|---|
3784 | 3784 |
formdata = formdef.data_class().get(formdata.id) |
3785 | 3785 |
assert formdata.data['bo1'] is None |
3786 | 3786 | |
3787 |
# check a value computed as the empty string is stored as an empty string, not None |
|
3788 |
item.fields = [{'field_id': 'bo1', 'value': '=""'}] |
|
3789 |
item.perform(formdata) |
|
3790 |
formdata = formdef.data_class().get(formdata.id) |
|
3791 |
assert formdata.data['bo1'] == '' |
|
3792 |
item.fields = [{'field_id': 'bo1', 'value': '{{ does_not_exist }}'}] |
|
3793 |
item.perform(formdata) |
|
3794 |
formdata = formdef.data_class().get(formdata.id) |
|
3795 |
assert formdata.data['bo1'] == '' |
|
3796 | ||
3787 | 3797 |
assert LoggedError.count() == 0 |
3788 | 3798 | |
3789 | 3799 |
item.fields = [{'field_id': 'bo1', 'value': '= ~ invalid python ~'}] |
... | ... | |
4233 | 4243 | |
4234 | 4244 |
# invalid values => do nothing |
4235 | 4245 |
assert LoggedError.count() == 0 |
4236 |
for value in ('plop', {}, []):
|
|
4246 |
for value in ('plop', '={}', '=[]'):
|
|
4237 | 4247 |
item = SetBackofficeFieldsWorkflowStatusItem() |
4238 | 4248 |
item.parent = st1 |
4239 | 4249 |
item.fields = [{'field_id': 'bo1', 'value': value}] |
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 not field.get('value'): |
|
123 |
# assign empty value 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 |
- |