From e1805d5ba8a28840e70670c025406cf5815b2cd8 Mon Sep 17 00:00:00 2001 From: Stefan Koelle Date: Wed, 5 Aug 2026 22:42:24 +0200 Subject: [PATCH] web dashboard special links fix --- src/db.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/db.py b/src/db.py index 93f0769..a25752b 100644 --- a/src/db.py +++ b/src/db.py @@ -156,15 +156,16 @@ def get_contact_count(conn, account: str | None) -> int: def search_contacts_without_photo(conn, account: str | None) -> list[dict]: where_clause, params = _account_filter_clause(account) - name_cond = "AND given_name IS NOT NULL AND given_name != '' AND family_name IS NOT NULL AND family_name != ''" + op = "AND" if where_clause else "WHERE" + name_cond = f"{op} given_name IS NOT NULL AND given_name != '' AND family_name IS NOT NULL AND family_name != ''" city_cond = "AND (JSON_SEARCH(addresses, 'one', '%', NULL, '$[*].city') IS NOT NULL)" with conn.cursor() as cur: cur.execute( f"""SELECT id, full_name, given_name, middle_name, family_name, prefix, suffix, organization, birthday, account, photo_url FROM contacts {where_clause} - AND photo_base64 IS NULL AND photo_url IS NULL - {name_cond} {city_cond} + {name_cond} AND photo_base64 IS NULL AND photo_url IS NULL + {city_cond} AND family_name != 'X' ORDER BY full_name""", params, @@ -174,7 +175,8 @@ def search_contacts_without_photo(conn, account: str | None) -> list[dict]: def search_contacts_without_city(conn, account: str | None) -> list[dict]: where_clause, params = _account_filter_clause(account) - name_cond = "AND given_name IS NOT NULL AND given_name != '' AND family_name IS NOT NULL AND family_name != ''" + op = "AND" if where_clause else "WHERE" + name_cond = f"{op} given_name IS NOT NULL AND given_name != '' AND family_name IS NOT NULL AND family_name != ''" contact_cond = "AND (JSON_LENGTH(phones) > 0 OR JSON_LENGTH(emails) > 0)" city_cond = "AND (JSON_LENGTH(addresses) = 0 OR JSON_SEARCH(addresses, 'one', '%', NULL, '$[*].city') IS NULL)" with conn.cursor() as cur: @@ -192,7 +194,8 @@ def search_contacts_without_city(conn, account: str | None) -> list[dict]: def search_contacts_without_social(conn, account: str | None) -> list[dict]: where_clause, params = _account_filter_clause(account) - name_cond = "AND given_name IS NOT NULL AND given_name != '' AND family_name IS NOT NULL AND family_name != ''" + op = "AND" if where_clause else "WHERE" + name_cond = f"{op} given_name IS NOT NULL AND given_name != '' AND family_name IS NOT NULL AND family_name != ''" contact_cond = "AND (JSON_LENGTH(phones) > 0 OR JSON_LENGTH(emails) > 0)" social_cond = "AND (social_profiles IS NULL OR JSON_LENGTH(social_profiles) = 0)" with conn.cursor() as cur: