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}"
|
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):
|
def _get_location_sort_priority(loc_item):
|
||||||
"""Calcula la prioridad de ordenamiento de una sucursal según su estado de armado."""
|
"""Calcula la prioridad de ordenamiento de una sucursal según su estado de armado."""
|
||||||
state = loc_item['status']
|
state = loc_item['status']
|
||||||
@@ -2380,8 +2403,11 @@ def run_update(accounts=None, exclude=None, full_refresh=False):
|
|||||||
|
|
||||||
soap_success = True
|
soap_success = True
|
||||||
|
|
||||||
except ConnectionResetError:
|
except (ConnectionResetError, OSError):
|
||||||
log_msg(f" ⚠️ Sesión SOAP expirada al consultar '{loc_name_str}'. Se reintentará en la siguiente vuelta.")
|
# 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:
|
except Exception as soap_err:
|
||||||
log_msg(f" ⚠️ Error de SOAP en '{loc_name_str}': {soap_err}")
|
log_msg(f" ⚠️ Error de SOAP en '{loc_name_str}': {soap_err}")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user