dashboard employee names + GE monogram fallback + kiosk startup sweep

This commit is contained in:
2026-07-28 18:24:19 -04:00
parent 3ed3857d4f
commit cf7b8bc49a
4 changed files with 63 additions and 25 deletions

View File

@@ -124,23 +124,41 @@ def resolve_employee_display_name(sso):
None on any miss."""
if sso is None or not str(sso).isdigit():
return None
# 1. The employee directory (selfhosted table or external wjf_employees).
if _selfhosted():
emp = db.session.get(DirectoryEmployee, int(sso))
if emp:
return f'{emp.firstname} {emp.lastname}'.strip() or None
return None
name = f'{emp.firstname} {emp.lastname}'.strip()
if name:
return name
else:
try:
conn = employee_connection()
with conn.cursor() as cur:
cur.execute(
'SELECT First_Name, Last_Name FROM employees WHERE SSO = %s',
(int(sso),))
row = cur.fetchone()
conn.close()
if row:
first = row.get('First_Name') or ''
last = row.get('Last_Name') or ''
name = f'{first.strip()} {last.strip()}'.strip()
if name:
return name
except Exception:
pass
# 2. Fallback: a shopdb login account for this SSO (e.g. a user from another
# location not carried in the directory). Their name lives on the User
# record; GE usernames are the SSO. Photo still falls back to the GE mark.
try:
conn = employee_connection()
with conn.cursor() as cur:
cur.execute(
'SELECT First_Name, Last_Name FROM employees WHERE SSO = %s',
(int(sso),))
row = cur.fetchone()
conn.close()
if row:
first = row.get('First_Name') or ''
last = row.get('Last_Name') or ''
return f'{first.strip()} {last.strip()}'.strip() or None
from shopdb.core.models import User
user = User.query.filter_by(username=str(sso)).first()
if user:
name = f'{(user.firstname or "").strip()} {(user.lastname or "").strip()}'.strip()
if name:
return name
except Exception:
pass
return None