From 8221a0da3e011cb14874b163eb4983d98397ed4c Mon Sep 17 00:00:00 2001 From: ValueOn AG Date: Sun, 26 Apr 2026 08:57:49 +0200 Subject: [PATCH] fixed user references --- modules/connectors/connectorDbPostgre.py | 21 --------------------- modules/routes/routeHelpers.py | 19 +++---------------- 2 files changed, 3 insertions(+), 37 deletions(-) diff --git a/modules/connectors/connectorDbPostgre.py b/modules/connectors/connectorDbPostgre.py index f2e7758e..7c56c57d 100644 --- a/modules/connectors/connectorDbPostgre.py +++ b/modules/connectors/connectorDbPostgre.py @@ -121,27 +121,6 @@ def getModelFields(model_class) -> Dict[str, str]: return fields -def _get_fk_sort_meta(model_class) -> Dict[str, Dict[str, str]]: - """Map FK field name -> {model, labelField} from json_schema_extra (``fk_model`` + ``fk_label_field``). - - ``fk_model`` may be omitted if ``fk_target.table`` is set (table name = resolver / JOIN key). - """ - result: Dict[str, Dict[str, str]] = {} - for name, field_info in model_class.model_fields.items(): - extra = field_info.json_schema_extra - if not extra or not isinstance(extra, dict): - continue - fk_model = extra.get("fk_model") - tgt = extra.get("fk_target") - if not fk_model and isinstance(tgt, dict) and tgt.get("table"): - fk_model = tgt["table"] - label_field = extra.get("fk_label_field") - if fk_model and label_field: - result[name] = {"model": str(fk_model), "labelField": str(label_field)} - return result - - - def parseRecordFields(record: Dict[str, Any], fields: Dict[str, str], context: str = "") -> None: """Parse record fields in-place: numeric typing, vector parsing, JSONB deserialization.""" import json as _json diff --git a/modules/routes/routeHelpers.py b/modules/routes/routeHelpers.py index 19bfdb8e..1a396d26 100644 --- a/modules/routes/routeHelpers.py +++ b/modules/routes/routeHelpers.py @@ -66,24 +66,12 @@ def resolveUserLabels(ids: List[str]) -> Dict[str, Optional[str]]: """Resolve user IDs to display names. Returns None for unresolvable.""" from modules.interfaces.interfaceDbApp import getRootInterface rootIface = getRootInterface() - from modules.datamodels.datamodelUam import User as _User + from modules.datamodels.datamodelUam import UserInDB as _UserInDB uniqueIds = list(set(ids)) users = rootIface.db.getRecordset( - _User, + _UserInDB, recordFilter={"id": uniqueIds}, ) - if not users and uniqueIds: - logger.warning( - "resolveUserLabels: query returned 0 users for %d ids (db=%s, table=%s). " - "Attempting full table scan...", - len(uniqueIds), getattr(rootIface.db, 'dbDatabase', '?'), _User.__name__, - ) - allUsers = rootIface.db.getRecordset(_User) - logger.warning( - "resolveUserLabels: full scan found %d users total. Looking for ids: %s", - len(allUsers or []), uniqueIds[:3], - ) - users = [u for u in (allUsers or []) if u.get("id") in set(uniqueIds)] result: Dict[str, Optional[str]] = {} found: Dict[str, dict] = {} for u in (users or []): @@ -92,9 +80,8 @@ def resolveUserLabels(ids: List[str]) -> Dict[str, Optional[str]]: for uid in ids: u = found.get(uid) if u: - result[uid] = u.get("username") or u.get("email") or None + result[uid] = u.get("displayName") or u.get("username") or u.get("email") or None else: - logger.warning("resolveUserLabels: user not found for id=%s", uid) result[uid] = None return result