diff options
-rw-r--r-- | ishtar_common/serializers.py | 7 | ||||
-rw-r--r-- | ishtar_common/tests.py | 13 |
2 files changed, 18 insertions, 2 deletions
diff --git a/ishtar_common/serializers.py b/ishtar_common/serializers.py index d2e3c2b98..84108c135 100644 --- a/ishtar_common/serializers.py +++ b/ishtar_common/serializers.py @@ -28,6 +28,8 @@ from archaeological_finds.serializers import find_serialization, \ from archaeological_warehouse.serializers import warehouse_serialization, \ WAREHOUSE_MODEL_LIST +from django.contrib.contenttypes.management import create_contenttypes + class PublicSerializer(serializers.BaseSerializer): def to_representation(self, obj): @@ -38,7 +40,7 @@ TYPE_MODEL_EXCLUDE = ["Area", "OperationTypeOld", "ProfileTypeSummary"] def get_type_models(): - return [ContentType, Permission, Group] + [ + return [Permission, Group] + [ model for model in apps.get_models() if isinstance(model(), models.GeneralType) and ( model.__name__ not in TYPE_MODEL_EXCLUDE) @@ -295,6 +297,9 @@ def full_serialization(operation_queryset=None, site_queryset=None, def restore_serialized(archive_name, user=None, delete_existing=False, release_locks=False): + for app in apps.get_app_configs(): + create_contenttypes(app, verbosity=1, interactive=False) + with zipfile.ZipFile(archive_name, "r") as zip_file: # check version info = json.loads(zip_file.read("info.json").decode("utf-8")) diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index 2cad1ef81..765d74312 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -628,7 +628,18 @@ class GenericSerializationTest: for key in json_result.keys(): __, k = key module_name, model_name = k.split("__") - module = importlib.import_module(module_name + ".models") + if module_name == "django": + if model_name in ("Group", "Permission"): + module = importlib.import_module( + "django.contrib.auth.models") + elif model_name in ("ContentType",): + module = importlib.import_module( + "django.contrib.contenttypes.models") + else: + return + else: + module = importlib.import_module(module_name + ".models") + model = getattr(module, model_name) current_count = model.objects.count() result = json.loads(json_result[key]) |