diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-04 12:03:28 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-04 12:03:28 +0200 |
commit | f2cb0542faac028dc3f90a61b46c0949bb35339f (patch) | |
tree | 1bc39caa723aee9d69fd7b98f61e0dbd442d82f1 /ishtar_common | |
parent | 7ea79f8af328904f0138a7d52f22b38dac3941b8 (diff) | |
download | Ishtar-f2cb0542faac028dc3f90a61b46c0949bb35339f.tar.bz2 Ishtar-f2cb0542faac028dc3f90a61b46c0949bb35339f.zip |
Serializer: manage queryset filter
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/serializers.py | 15 | ||||
-rw-r--r-- | ishtar_common/tests.py | 17 |
2 files changed, 23 insertions, 9 deletions
diff --git a/ishtar_common/serializers.py b/ishtar_common/serializers.py index 03433df89..409051ec0 100644 --- a/ishtar_common/serializers.py +++ b/ishtar_common/serializers.py @@ -103,13 +103,18 @@ def archive_serialization(result, archive_dir=None, archive=False, return archive_name -def generic_get_results(model_list, dirname, no_geo=True): +def generic_get_results(model_list, dirname, no_geo=True, + result_queryset=None): result = OrderedDict() for model in model_list: - model_name = model.__name__ - model_name = str(model.__module__).split(".")[0] + "__" + model_name - - base_q = model.objects + base_model_name = model.__name__ + model_name = str(model.__module__).split(".")[0] + "__" + \ + base_model_name + + if result_queryset and base_model_name in result_queryset: + base_q = result_queryset[base_model_name] + else: + base_q = model.objects q = base_q recursion = None if hasattr(model, "parent"): diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index 7bb3ce098..68c206865 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -599,8 +599,12 @@ class CacheTest(TestCase): class GenericSerializationTest: - def generic_serialization_test(self, serialize): - json_result = serialize() + def generic_serialization_test(self, serialize, no_test=False, kwargs=None): + if not kwargs: + kwargs = {} + json_result = serialize(**kwargs) + if no_test: + return json_result for key in json_result.keys(): __, k = key module_name, model_name = k.split("__") @@ -615,12 +619,17 @@ class GenericSerializationTest: msg="Serialization for model {}.{} failed. {} serialized {} " "expected".format(module.__name__, model_name, serialization_count, current_count)) + return json_result - def generic_restore_test_genzip(self, model_list, serialization): + def generic_restore_test_genzip(self, model_list, serialization, + kwargs=None): current_number = {} for model in model_list: current_number[model.__name__] = model.objects.count() - zip_filename = serialization(archive=True) + if not kwargs: + kwargs = {} + kwargs["archive"] = True + zip_filename = serialization(**kwargs) return current_number, zip_filename def generic_restore_test(self, zip_filename, current_number, model_list): |