related mapping

This commit is contained in:
2026-08-10 22:54:44 +02:00
parent af124d803f
commit 7b1acbb8bb
4 changed files with 30 additions and 4 deletions
+3 -3
View File
@@ -56,7 +56,7 @@ def _fmt_ts(dt) -> str | None:
def _row_to_contact_out(row: dict, group_names: list[str] | None = None) -> dict:
row = dict(row)
for field in ["emails", "phones", "addresses", "urls", "social_profiles", "categories"]:
for field in ["emails", "phones", "addresses", "urls", "social_profiles", "related_names", "categories"]:
raw = row.get(field)
row[field] = json.loads(raw) if raw else []
if not row.get("full_name"):
@@ -134,7 +134,7 @@ def get_contact(contact_id: int, current_user: str = Depends(get_current_user)):
with conn.cursor() as cur:
cur.execute(
f"""SELECT id, account, uid, full_name, prefix, given_name, middle_name, family_name, suffix, organization,
job_title, birthday, notes, photo_url, emails, phones, addresses, urls, social_profiles, categories, updated_at
job_title, birthday, notes, photo_url, emails, phones, addresses, urls, social_profiles, related_names, categories, updated_at
FROM contacts {where_clause} {id_clause}""",
params + [contact_id],
)
@@ -625,7 +625,7 @@ def web_contact(
with conn.cursor() as cur:
cur.execute(
f"""SELECT id, account, uid, full_name, prefix, given_name, middle_name, family_name, suffix, organization,
job_title, birthday, notes, photo_url, emails, phones, addresses, urls, social_profiles, categories, updated_at
job_title, birthday, notes, photo_url, emails, phones, addresses, urls, social_profiles, related_names, categories, updated_at
FROM contacts {where_clause} {id_clause}""",
params + [contact_id],
)
+1
View File
@@ -25,6 +25,7 @@ class ContactOut(BaseModel):
addresses: list
urls: list
social_profiles: list
related_names: list
categories: list
groups: list[str] = []
updated_at: str
+14
View File
@@ -436,6 +436,20 @@
</div>
{% endif %}
{% if contact.related_names %}
<div class="section">
<div class="section-title">Beziehungen</div>
<div class="tiles-grid">
{% for rn in contact.related_names %}
<div class="tile">
<div class="tile-label">{{ rn.type }}</div>
<div class="tile-value">{{ rn.value }}</div>
</div>
{% endfor %}
</div>
</div>
{% endif %}
{% if contact.categories %}
<div class="section">
<div class="section-title">Kategorien</div>