summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-07 21:12:43 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-07 21:12:43 +0200
commit1638af713f4418f5dc5f0ccb97b691b668df0dc7 (patch)
tree84cfab184ccfb1052a1b752999efa91d0357d128 /ishtar_common
parentf50d4f8d8cfff475451298f6dd14188fe971e0ef (diff)
downloadIshtar-1638af713f4418f5dc5f0ccb97b691b668df0dc7.tar.bz2
Ishtar-1638af713f4418f5dc5f0ccb97b691b668df0dc7.zip
Serialization: full export test
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/serializers.py40
-rw-r--r--ishtar_common/tests.py26
2 files changed, 58 insertions, 8 deletions
diff --git a/ishtar_common/serializers.py b/ishtar_common/serializers.py
index bd0dac3d4..7e61df517 100644
--- a/ishtar_common/serializers.py
+++ b/ishtar_common/serializers.py
@@ -34,14 +34,17 @@ class PublicSerializer(serializers.BaseSerializer):
TYPE_MODEL_EXCLUDE = ["Area", "OperationTypeOld"]
-def type_serialization(archive=False, return_empty_types=False,
- archive_name=None):
- TYPE_MODEL_LIST = [
+def get_type_models():
+ return [
model for model in apps.get_models()
if isinstance(model(), models.GeneralType) and (
- model.__name__ not in TYPE_MODEL_EXCLUDE)
+ model.__name__ not in TYPE_MODEL_EXCLUDE)
]
- result = generic_get_results(TYPE_MODEL_LIST, "types")
+
+
+def type_serialization(archive=False, return_empty_types=False,
+ archive_name=None):
+ result = generic_get_results(get_type_models(), "types")
return archive_serialization(result, archive_dir="types", archive=archive,
return_empty_types=return_empty_types,
archive_name=archive_name)
@@ -176,6 +179,33 @@ def document_serialization(archive=False, return_empty_types=False,
return full_archive
+def full_serialization(operation_queryset=None, site_queryset=None,
+ cr_queryset=None, find_queryset=None,
+ warehouse_queryset=None):
+ archive_name = type_serialization()
+ conf_serialization(archive_name=archive_name)
+ importer_serialization(archive_name=archive_name)
+ geo_serialization(archive_name=archive_name)
+ directory_serialization(archive_name=archive_name)
+ document_serialization(archive_name=archive_name)
+ operation_serialization(
+ archive_name=archive_name, operation_queryset=operation_queryset,
+ site_queryset=site_queryset, cr_queryset=cr_queryset,
+ find_queryset=find_queryset, warehouse_queryset=warehouse_queryset)
+ cr_serialization(
+ archive_name=archive_name, operation_queryset=operation_queryset,
+ site_queryset=site_queryset, cr_queryset=cr_queryset,
+ find_queryset=find_queryset, warehouse_queryset=warehouse_queryset)
+ find_serialization(
+ archive_name=archive_name, operation_queryset=operation_queryset,
+ site_queryset=site_queryset, cr_queryset=cr_queryset,
+ find_queryset=find_queryset, warehouse_queryset=warehouse_queryset)
+ warehouse_serialization(
+ archive_name=archive_name, operation_queryset=operation_queryset,
+ site_queryset=site_queryset, cr_queryset=cr_queryset,
+ find_queryset=find_queryset, warehouse_queryset=warehouse_queryset)
+
+
def restore_serialized(archive_name, delete_existing=False):
with zipfile.ZipFile(archive_name, "r") as zip_file:
# check version
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index 96737c765..9313a8432 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -55,7 +55,11 @@ from ishtar_common.serializers import type_serialization, \
restore_serialized, conf_serialization, CONF_MODEL_LIST, \
importer_serialization, IMPORT_MODEL_LIST, geo_serialization, \
GEO_MODEL_LIST, directory_serialization, DIRECTORY_MODEL_LIST, \
- document_serialization
+ document_serialization, get_type_models
+from archaeological_operations.serializers import OPERATION_MODEL_LIST
+from archaeological_context_records.serializers import CR_MODEL_LIST
+from archaeological_finds.serializers import FIND_MODEL_LIST
+from archaeological_warehouse.serializers import WAREHOUSE_MODEL_LIST
from ishtar_common.serializers_utils import serialization_info
from ishtar_common.utils import post_save_geo, update_data, move_dict_data, \
rename_and_simplify_media_name, try_fix_file
@@ -651,7 +655,8 @@ class GenericSerializationTest:
kwargs=None):
current_number = {}
for model in model_list:
- current_number[model.__name__] = model.objects.count()
+ current_number[(model.__module__, model.__name__)] = \
+ model.objects.count()
if not kwargs:
kwargs = {}
kwargs["archive"] = True
@@ -661,7 +666,7 @@ class GenericSerializationTest:
def generic_restore_test(self, zip_filename, current_number, model_list):
restore_serialized(zip_filename, delete_existing=True)
for model in model_list:
- previous_nb = current_number[model.__name__]
+ previous_nb = current_number[(model.__module__, model.__name__)]
current_nb = model.objects.count()
self.assertEqual(
previous_nb, current_nb,
@@ -1049,6 +1054,21 @@ class SerializationTest(GenericSerializationTest, TestCase):
self.generic_restore_test(zip_filename, current_number,
[models.Document])
+ def test_full_restore(self):
+ self.create_types()
+ self.create_default_conf()
+ self.create_default_importer()
+ self.create_geo_default()
+ self.create_directory_default()
+ self.create_document_default()
+ model_list = get_type_models() + CONF_MODEL_LIST + IMPORT_MODEL_LIST + \
+ GEO_MODEL_LIST + DIRECTORY_MODEL_LIST + OPERATION_MODEL_LIST + \
+ CR_MODEL_LIST + FIND_MODEL_LIST + WAREHOUSE_MODEL_LIST
+ current_number, zip_filename = self.generic_restore_test_genzip(
+ model_list, document_serialization)
+ self.generic_restore_test(zip_filename, current_number,
+ model_list)
+
class AccessControlTest(TestCase):
def test_administrator(self):