From 976f84c737f77c45802a621cb59962f484727366 Mon Sep 17 00:00:00 2001 From: Stefan Koelle Date: Wed, 5 Aug 2026 00:56:27 +0200 Subject: [PATCH] fix 2 --- src/vcard_parser.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/vcard_parser.py b/src/vcard_parser.py index f5fe502..d03c14c 100644 --- a/src/vcard_parser.py +++ b/src/vcard_parser.py @@ -11,6 +11,15 @@ def _get(vcard, attr, default=None): return getattr(vcard, attr).value if hasattr(vcard, attr) else default +def _scalar(val): + """Macht aus einem potenziellen List-Wert einen String (fuer MySQL-PARAMETER).""" + if val is None: + return None + if isinstance(val, (list, tuple)): + return ",".join(str(v) for v in val) + return str(val) + + def _type_str(obj) -> str: """Liest den TYPE-Parameter sicher aus einem vobject-Element.""" if hasattr(obj, "type_paramlist") and obj.type_paramlist: @@ -71,19 +80,19 @@ def parse_vcard(raw_text: str, account: str) -> dict | None: "account": account, "uid": uid, "etag": None, - "full_name": _get(vcard, "fn"), + "full_name": _scalar(_get(vcard, "fn")), "given_name": given_name, "family_name": family_name, "middle_name": middle_name, "prefix": prefix, "suffix": suffix, - "nickname": _get(vcard, "nickname"), + "nickname": _scalar(_get(vcard, "nickname")), "organization": org, - "job_title": _get(vcard, "title"), + "job_title": _scalar(_get(vcard, "title")), "department": None, "birthday": birthday, "anniversary": None, - "notes": _get(vcard, "note"), + "notes": _scalar(_get(vcard, "note")), "photo_base64": None, "emails": json.dumps(emails, ensure_ascii=False), "phones": json.dumps(phones, ensure_ascii=False),