diff --git a/server/src/tests/core/ui/test_userinterface.py b/server/src/tests/core/ui/test_userinterface.py index d3f50ea13..6b9862a34 100644 --- a/server/src/tests/core/ui/test_userinterface.py +++ b/server/src/tests/core/ui/test_userinterface.py @@ -59,9 +59,6 @@ class UserinterfaceTest(UDSTestCase): self.assertEqual(ui.image_field.value, DEFAULTS['image_field'], 'image_field') self.assertEqual(ui.date_field.value, DEFAULTS['date_field'], 'date_field') - def test_serialization(self): - pass - def test_old_serialization(self): # This test is to ensure that old serialized data can be loaded # This data is from a diff --git a/server/src/uds/core/ui/user_interface.py b/server/src/uds/core/ui/user_interface.py index 3298da53c..5bf23e5d8 100644 --- a/server/src/uds/core/ui/user_interface.py +++ b/server/src/uds/core/ui/user_interface.py @@ -1216,8 +1216,8 @@ class UserInterface(metaclass=UserInterfaceType): # Any unexpected type will raise an exception arr = [(k, v.type.name, fw_converters[v.type](v)) for k, v in self._gui.items() if fw_converters[v.type](v) is not None] - return codecs.encode( - SERIALIZATION_HEADER + SERIALIZATION_VERSION + serialize(arr).encode(), + return SERIALIZATION_HEADER + SERIALIZATION_VERSION + codecs.encode( + serialize(arr).encode(), 'zip', ) @@ -1241,20 +1241,17 @@ class UserInterface(metaclass=UserInterfaceType): if not values: return - tmp_values = codecs.decode(values, 'zip') - if not tmp_values: - return - - if not tmp_values.startswith(SERIALIZATION_HEADER): + if not values.startswith(SERIALIZATION_HEADER): # Unserialize with old method self.oldUnserializeForm(values) return - - values = tmp_values - + version = values[len(SERIALIZATION_HEADER) : len(SERIALIZATION_HEADER) + len(SERIALIZATION_VERSION)] - # Currently, only 1 version is available, ignore it - values = values[len(SERIALIZATION_HEADER) + len(SERIALIZATION_VERSION) :] + + values = codecs.decode(values[len(SERIALIZATION_HEADER) + len(SERIALIZATION_VERSION) :], 'zip') + if not values: + return + arr = unserialize(values.decode()) # Set all values to defaults ones