diff --git a/sonar/projects.py b/sonar/projects.py index 914e0d4d..190bb099 100644 --- a/sonar/projects.py +++ b/sonar/projects.py @@ -30,6 +30,7 @@ import json import concurrent.futures from datetime import datetime +import traceback from typing import Optional, Union from http import HTTPStatus @@ -1042,6 +1043,7 @@ def export(self, export_settings: types.ConfigSettings, settings_list: Optional[ json_data["settings"] = [s.to_json() for s in settings_dict.values() if with_inherited or not s.inherited and s.key != "visibility"] except Exception as e: + traceback.print_exc() util.handle_error(e, f"exporting {str(self)}, export of this project interrupted", catch_all=True) json_data["error"] = f"{util.error_msg(e)} while exporting project" log.debug("Exporting %s done, returning %s", str(self), util.json_dump(json_data)) diff --git a/sonar/utilities.py b/sonar/utilities.py index ff4664d1..431b1b77 100644 --- a/sonar/utilities.py +++ b/sonar/utilities.py @@ -732,6 +732,8 @@ def dict_remap_and_stringify(original_dict: dict[str, str], remapping: dict[str, def list_to_dict(original_list: list[dict[str, Any]], key_field: str) -> dict[str, any]: """Converts a list to dict with list key_field as dict key""" + if original_list is None: + return original_list converted_dict = {elem[key_field]: elem for elem in original_list} for e in converted_dict.values(): e.pop(key_field) @@ -740,7 +742,7 @@ def list_to_dict(original_list: list[dict[str, Any]], key_field: str) -> dict[st def dict_to_list(original_dict: dict[str, Any], key_field: str, value_field: Optional[str] = "value") -> list[str, any]: """Converts a dict to list adding dict key in list key_field""" - if isinstance(original_dict, list): + if original_dict is None or isinstance(original_dict, list): return original_dict return [{key_field: key, value_field: elem} if not isinstance(elem, dict) else {key_field: key, **elem} for key, elem in original_dict.items()]