Fix SOAP session: clear stale GUID on ConnectionResetError/OSError so next cycle fetches fresh token

This commit is contained in:
cheveguerra
2026-07-26 18:24:29 +00:00
parent 51b7d308c0
commit 7b77793ef3
+28 -2
View File
@@ -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}")