From c7b9af00a568ca947a4fadb7dbff8adada48549f Mon Sep 17 00:00:00 2001 From: "Anders H. Rebner" <anderhre@stud.ntnu.no> Date: Tue, 21 Apr 2020 08:41:39 +0200 Subject: [PATCH] #132 Felles funksjon for modul-konstruksjon --- soitool/serialize_export_import_soi.py | 75 ++++++++++++-------------- 1 file changed, 35 insertions(+), 40 deletions(-) diff --git a/soitool/serialize_export_import_soi.py b/soitool/serialize_export_import_soi.py index 3900c67..822e459 100644 --- a/soitool/serialize_export_import_soi.py +++ b/soitool/serialize_export_import_soi.py @@ -235,9 +235,41 @@ def construct_soi_from_serialized(serialized, compressed=False): if not SERIALIZED_SOI_SCHEMA.is_valid(serialized): raise ValueError("Serialized SOI does not have correct format.") + modules = construct_modules(serialized) + attachments = construct_modules(serialized, is_modules=False) + + # Create SOI + soi = SOI( + serialized["title"], + serialized["description"], + serialized["version"], + serialized["date"], + serialized["valid"]["from_date"], + serialized["valid"]["to_date"], + serialized["icon"], + serialized["classification"], + serialized["orientation"], + serialized["placement_strategy"], + serialized["algorithm_bin"], + serialized["algorithm_pack"], + serialized["algorithm_sort"], + modules, + attachments, + ) + + return soi + + +def construct_modules(serialized, is_modules=True): + """...""" # Create dict for modules with instantiated widget(s) modules = [] - for module in serialized["modules"]: + if is_modules: + serialized_modules = serialized["modules"] + else: + serialized_modules = serialized["attachments"] + + for module in serialized_modules: module_type = module["type"] if module_type == "TableModule": @@ -268,51 +300,14 @@ def construct_soi_from_serialized(serialized, compressed=False): size = module["size"] data = module["data"] modules.append( - {"widget": FreeTextModule(size, data), "meta": module["meta"]} + {"widget": FreeTextModule(size, data), "meta": module["meta"],} ) else: raise TypeError( "Module-type '{}' is not recognized.".format(module_type) ) - # Create dict for attachments with instantiated widget(s) - attachments = [] - for attachment in serialized["attachments"]: - module_type = attachment["type"] - - if module_type == "TableModule": - size = attachment["size"] - data = attachment["data"] - attachments.append( - { - "widget": TableModule(size, data), - "meta": attachment["meta"], - } - ) - else: - raise TypeError( - "Module-type '{}' is not recognized.".format(module_type) - ) - # Create SOI - soi = SOI( - serialized["title"], - serialized["description"], - serialized["version"], - serialized["date"], - serialized["valid"]["from_date"], - serialized["valid"]["to_date"], - serialized["icon"], - serialized["classification"], - serialized["orientation"], - serialized["placement_strategy"], - serialized["algorithm_bin"], - serialized["algorithm_pack"], - serialized["algorithm_sort"], - modules, - attachments, - ) - - return soi + return modules def generate_soi_filename(soi): -- GitLab