0001-misc-do-not-store-unknown-value-in-item-field-using-.patch
tests/workflow/test_all.py | ||
---|---|---|
4828 | 4828 |
assert formdata.data['bo1_display'] == 'bar' |
4829 | 4829 |
assert formdata.data['bo1_structured']['attr'] == 'attr1' |
4830 | 4830 | |
4831 |
# reset, and get unknown value |
|
4831 |
# reset, with unknown value |
|
4832 |
if two_pubs.is_using_postgresql(): |
|
4833 |
two_pubs.loggederror_class.wipe() |
|
4832 | 4834 |
formdata.data = {} |
4833 | 4835 |
formdata.store() |
4834 | 4836 |
item.fields = [{'field_id': 'bo1', 'value': 'xxx'}] |
4835 | 4837 |
item.perform(formdata) |
4836 | 4838 |
formdata = formdef.data_class().get(formdata.id) |
4837 |
assert formdata.data['bo1'] == 'xxx' # raw value is still kept
|
|
4839 |
assert formdata.data.get('bo1') is None # invalid value is not stored
|
|
4838 | 4840 |
assert formdata.data.get('bo1_display') is None |
4839 | 4841 |
assert formdata.data.get('bo1_structured') is None |
4842 |
if two_pubs.is_using_postgresql(): |
|
4843 |
assert two_pubs.loggederror_class.count() == 1 |
|
4844 |
logged_error = two_pubs.loggederror_class.select()[0] |
|
4845 |
assert logged_error.summary.startswith('Failed to convert') |
|
4840 | 4846 | |
4841 | 4847 |
# reset, and get empty value |
4842 | 4848 |
formdata.data = {} |
wcs/fields.py | ||
---|---|---|
2065 | 2065 |
def convert_value_from_anything(self, value): |
2066 | 2066 |
if value is None: |
2067 | 2067 |
return None |
2068 |
return str(value) |
|
2068 |
value = str(value) |
|
2069 |
if self.data_source: |
|
2070 |
data_source = data_sources.get_object(self.data_source) |
|
2071 |
if data_source.type and data_source.type.startswith('carddef:'): |
|
2072 |
value = data_source.get_card_structured_value_by_id(value) |
|
2073 |
if value: |
|
2074 |
value = value['id'] |
|
2075 |
else: |
|
2076 |
raise ValueError('unknown card value') |
|
2077 |
return value |
|
2069 | 2078 | |
2070 | 2079 |
def convert_value_from_str(self, value): |
2071 | 2080 |
# caller should also call store_display_value and store_structured_value |
2072 |
- |