diff options
-rw-r--r-- | archaeological_operations/tests.py | 29 | ||||
-rw-r--r-- | ishtar_common/serializers.py | 14 |
2 files changed, 39 insertions, 4 deletions
diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index 9779ad424..51dd1c346 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -56,6 +56,7 @@ from ishtar_common.tests import WizardTest, WizardTestFormData as FormData, \ create_superuser, create_user, TestCase, OPERATION_FIXTURES, \ AutocompleteTestBase, AcItem, OPERATION_TOWNS_FIXTURES, FILE_FIXTURES, \ COMMON_FIXTURES, GenericSerializationTest, WAREHOUSE_FIXTURES +from ishtar_common.serializers import restore_serialized class FileInit(object): @@ -821,6 +822,34 @@ class SerializationTest(GenericSerializationTest, TestCase): self.generic_restore_test(zip_filename, current_number, serializers.OPERATION_MODEL_LIST) + def test_historization_on_restore(self): + current_number, zip_filename = self.generic_restore_test_genzip( + serializers.OPERATION_MODEL_LIST, + serializers.operation_serialization) + + operation = models.Operation.objects.get(code_patriarche="66666") + version_nb = operation.history.count() + + restore_serialized(zip_filename, delete_existing=False) + operation = models.Operation.objects.get(code_patriarche="66666") + self.assertEqual(operation.history_creator, self.user) + self.assertEqual(operation.history_modifier, self.user) + # no new version + self.assertEqual(operation.history.count(), version_nb) + + __, __, new_user = create_user() + restore_serialized(zip_filename, delete_existing=False, user=new_user) + operation = models.Operation.objects.get(code_patriarche="66666") + self.assertEqual(operation.history_creator, self.user) + self.assertEqual(operation.history_modifier, new_user) + self.assertEqual(operation.history.count(), version_nb + 1) + + restore_serialized(zip_filename, delete_existing=True, user=new_user) + operation = models.Operation.objects.get(code_patriarche="66666") + self.assertEqual(operation.history_creator, new_user) + self.assertEqual(operation.history_modifier, new_user) + self.assertEqual(operation.history.count(), 1) + class ParcelTest(ImportTest, TestCase): fixtures = OPERATION_TOWNS_FIXTURES diff --git a/ishtar_common/serializers.py b/ishtar_common/serializers.py index 6ff0ae9bb..aaf7baa08 100644 --- a/ishtar_common/serializers.py +++ b/ishtar_common/serializers.py @@ -330,7 +330,7 @@ def restore_serialized(archive_name, user=None, delete_existing=False): idx = -1 for idx, obj in enumerate(deserialize("json", data)): extra_attrs = {} - if historized and not user: + if historized: keys = obj.object.natural_key() old_obj = None try: @@ -351,11 +351,17 @@ def restore_serialized(archive_name, user=None, delete_existing=False): obj = model.objects.get(id=obj.object.id) if user: obj.history_modifier = user - else: + if extra_attrs and \ + "history_creator_id" in extra_attrs: + obj.history_creator_id = extra_attrs[ + "history_creator_id"] + else: + obj.history_creator = user + elif extra_attrs: + for k in extra_attrs: + setattr(obj, k, extra_attrs[k]) obj.skip_history_when_saving = True obj._no_move = True - for k in extra_attrs: - setattr(obj, k, extra_attrs[k]) obj.save() if idx >= 0: result.append((model.__name__, idx + 1)) |