mirror of
https://github.com/cheveguerra/TotalConnect.git
synced 2026-08-19 00:46:37 +00:00
Fix SOAP session: clear stale GUID on ConnectionResetError/OSError so next cycle fetches fresh token
This commit is contained in:
@@ -502,6 +502,29 @@ def format_trigger_time(raw_time_str):
|
||||
return f" @ {raw_time_str}"
|
||||
|
||||
|
||||
def get_account_badge_style(label):
|
||||
"""Devuelve un estilo distintivo para el badge de cada cuenta (solo el cuadrito)."""
|
||||
clean = str(label).strip().lower()
|
||||
|
||||
# Paleta específica para cuentas conocidas
|
||||
if "2020" in clean:
|
||||
# Azul Real / Índigo Elegante
|
||||
return 'style="background: #eff6ff; color: #1d4ed8; border: 1px solid #bfdbfe;"'
|
||||
elif "2019" in clean:
|
||||
# Morado / Violeta Elegante
|
||||
return 'style="background: #faf5ff; color: #7e22ce; border: 1px solid #e9d5ff;"'
|
||||
else:
|
||||
# Paleta dinámica para cualquier otra cuenta (hash de color)
|
||||
PALETTES = [
|
||||
'style="background: #f0fdf4; color: #15803d; border: 1px solid #bbf7d0;"', # Verde
|
||||
'style="background: #fff7ed; color: #c2410c; border: 1px solid #fed7aa;"', # Naranja
|
||||
'style="background: #ecfeff; color: #0e7490; border: 1px solid #a5f3fc;"', # Cían
|
||||
'style="background: #fdf2f8; color: #be185d; border: 1px solid #fbcfe8;"', # Rosa
|
||||
]
|
||||
idx = sum(ord(c) for c in clean) % len(PALETTES)
|
||||
return PALETTES[idx]
|
||||
|
||||
|
||||
def _get_location_sort_priority(loc_item):
|
||||
"""Calcula la prioridad de ordenamiento de una sucursal según su estado de armado."""
|
||||
state = loc_item['status']
|
||||
@@ -2380,8 +2403,11 @@ def run_update(accounts=None, exclude=None, full_refresh=False):
|
||||
|
||||
soap_success = True
|
||||
|
||||
except ConnectionResetError:
|
||||
log_msg(f" ⚠️ Sesión SOAP expirada al consultar '{loc_name_str}'. Se reintentará en la siguiente vuelta.")
|
||||
except (ConnectionResetError, OSError):
|
||||
# El GUID de sesión SOAP caducó o fue rechazado por Honeywell.
|
||||
# Se limpia del caché para que en el siguiente ciclo se obtenga uno nuevo.
|
||||
soap_session_ids.pop(acc['username'], None)
|
||||
log_msg(f" ⚠️ Sesión SOAP expirada al consultar '{loc_name_str}'. GUID limpiado — se renovará en el siguiente ciclo.")
|
||||
except Exception as soap_err:
|
||||
log_msg(f" ⚠️ Error de SOAP en '{loc_name_str}': {soap_err}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user