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)) | 
