Skip to content

Commit a202e17

Browse files
committed
Handle None values in version data
1 parent 005f2cb commit a202e17

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

main/utils.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,10 @@ def _date_field_adjust(
113113
updated_serialized_data = json.loads(version.serialized_data)
114114
has_changed = False
115115
for field in fields:
116-
if field not in updated_serialized_data[0]['fields']:
116+
_value = updated_serialized_data[0]['fields'].get(field)
117+
if _value is None:
117118
continue
118-
updated_value = parser(updated_serialized_data[0]['fields'][field])
119+
updated_value = parser(_value)
119120
if updated_value is None:
120121
# For other format, parser should return None
121122
continue

utils/test_utils.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -105,35 +105,36 @@ def setUp(self):
105105
new_value = '2022-01-01'
106106
if (index % 2) == 0:
107107
new_value = '2022-01-01T00:00:00'
108+
elif index == 1:
109+
new_value = None
108110
version.serialized_data = self.update_serialized_data(
109111
version.serialized_data,
110112
new_value,
111113
)
112-
version.save()
113114
Version.objects.bulk_update(versions, fields=('serialized_data',))
114115
# Version data snapshot excluding self.field_name
115116
self.version_data_snapshot = self.get_version_data_snapshot(self.field_name)
116-
self.assert_values({'2022-01-01': 47, '2022-01-01T00:00:00': 48})
117+
self.assert_values({'2022-01-01': 46, '2022-01-01T00:00:00': 48, None: 1})
117118

118119
def test_date_fields_to_datetime(self):
119-
self.assert_values({'2022-01-01': 47, '2022-01-01T00:00:00': 48})
120+
self.assert_values({'2022-01-01': 46, '2022-01-01T00:00:00': 48, None: 1})
120121
DjangoReversionDataFixHelper.date_fields_to_datetime(
121122
ContentType,
122123
Version,
123124
PerOverview,
124125
[self.field_name]
125126
)
126-
self.assert_values({'2022-01-01T00:00:00': 95})
127+
self.assert_values({'2022-01-01T00:00:00': 94, None: 1})
127128

128129
def test_datetime_fields_to_date(self):
129130
with self.assertRaises(RevertError):
130131
self.confirm_version_data_serialization()
131-
self.assert_values({'2022-01-01': 47, '2022-01-01T00:00:00': 48})
132+
self.assert_values({'2022-01-01': 46, '2022-01-01T00:00:00': 48, None: 1})
132133
DjangoReversionDataFixHelper.datetime_fields_to_date(
133134
ContentType,
134135
Version,
135136
PerOverview,
136137
[self.field_name]
137138
)
138-
self.assert_values({'2022-01-01': 95})
139+
self.assert_values({'2022-01-01': 94, None: 1})
139140
self.confirm_version_data_serialization()

0 commit comments

Comments
 (0)