CoolFace
Apppublic

fmatituy/selectospromanager

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
exceptions.py37 linesDownload Raw Back to core
1from nicegui import ui
2from core.logger import logger
3
4class SelectosException(Exception):
5    """Base exception para el ERP."""
6    def __init__(self, message: str, code: str = "GENERIC_ERROR"):
7        self.message = message
8        self.code = code
9        super().__init__(self.message)
10
11class AuthError(SelectosException):
12    """Error de autenticación o permisos."""
13    pass
14
15class DatabaseError(SelectosException):
16    """Error en la capa de persistencia."""
17    pass
18
19def global_exception_handler(e: Exception):
20    """
21    Captura errores no manejados para prevenir el crash del servidor.
22    Muestra una notificación amigable al usuario y loguea el error técnico.
23    """
24    error_msg = str(e)
25    logger.error(f"CRITICAL ERROR CAPTURED: {error_msg}", exc_info=True)
26    
27    # Si estamos en un contexto de UI de NiceGUI
28    try:
29        ui.notify(
30            "⚠️ Ha ocurrido un error inesperado. Por favor, contacte a Soporte IT.",
31            type='negative',
32            position='top',
33            close_button=True
34        )
35    except:
36        pass
37