diff --git a/lib/dl_core/dl_core/us_manager/us_manager.py b/lib/dl_core/dl_core/us_manager/us_manager.py index 24633aa52..e0a508534 100644 --- a/lib/dl_core/dl_core/us_manager/us_manager.py +++ b/lib/dl_core/dl_core/us_manager/us_manager.py @@ -433,6 +433,8 @@ def _get_entry_save_params(self, entry: USEntry) -> dict: data_pack = USDataPack(data=data_dict) for key, secret in data_pack.secrets.items(): + if isinstance(secret, dict): + secret = json.dumps(secret) assert secret is None or isinstance(secret, str) data_pack.secrets[key] = self._crypto_controller.encrypt_with_actual_key(secret) diff --git a/lib/dl_core/dl_core/utils.py b/lib/dl_core/dl_core/utils.py index 5c4d5d47c..121eafcc3 100644 --- a/lib/dl_core/dl_core/utils.py +++ b/lib/dl_core/dl_core/utils.py @@ -270,8 +270,6 @@ def sa_plain_text(query: str) -> sa.sql.elements.TextClause: def secrepr(value: Optional[str]) -> str: """Convenience function for attrs-repr of secrets""" - if value is None: - return repr(value) if not value: return repr(value) if not isinstance(value, str): @@ -284,6 +282,12 @@ def secrepr(value: Optional[str]) -> str: return repr(f"{value[:side_size]}...{value[-side_size:]}") +def secrepr_dict(d: dict[str, Optional[str]]) -> str: + if not d: + return repr(d) + return repr({key: secrepr(value) for key, value in d.items()}) + + def _multidict_to_list(md: CIMultiDictProxy[str]) -> Iterable[tuple[str, str]]: return [(str(k), str(v)) for k, v in md.items()]