diff options
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/serializers.py | 40 | ||||
-rw-r--r-- | ishtar_common/tests.py | 26 |
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): |