- Initialisation of the EveAI Chat Client.

- Introduction of Tenant Makes
This commit is contained in:
Josako
2025-06-06 16:42:24 +02:00
parent 57c0e7a1ba
commit bc1626c4ff
40 changed files with 1767 additions and 36 deletions

View File

@@ -0,0 +1 @@
# Utils package for eveai_chat_client

View File

@@ -0,0 +1,85 @@
import traceback
import jinja2
from flask import render_template, request, jsonify, redirect, current_app, flash
from common.utils.eveai_exceptions import EveAINoSessionTenant
def not_found_error(error):
current_app.logger.error(f"Not Found Error: {error}")
current_app.logger.error(traceback.format_exc())
return render_template('error.html', message="Page not found."), 404
def internal_server_error(error):
current_app.logger.error(f"Internal Server Error: {error}")
current_app.logger.error(traceback.format_exc())
return render_template('error.html', message="Internal server error."), 500
def not_authorised_error(error):
current_app.logger.error(f"Not Authorised Error: {error}")
current_app.logger.error(traceback.format_exc())
return render_template('error.html', message="Not authorized."), 401
def access_forbidden(error):
current_app.logger.error(f"Access Forbidden: {error}")
current_app.logger.error(traceback.format_exc())
return render_template('error.html', message="Access forbidden."), 403
def key_error_handler(error):
current_app.logger.error(f"Key Error: {error}")
current_app.logger.error(traceback.format_exc())
return render_template('error.html', message="An unexpected error occurred."), 500
def attribute_error_handler(error):
"""Handle AttributeError exceptions."""
error_msg = str(error)
current_app.logger.error(f"AttributeError: {error_msg}")
current_app.logger.error(traceback.format_exc())
return render_template('error.html', message="An application error occurred."), 500
def no_tenant_selected_error(error):
"""Handle errors when no tenant is selected in the current session."""
current_app.logger.error(f"No Session Tenant Error: {error}")
current_app.logger.error(traceback.format_exc())
return render_template('error.html', message="Session expired. Please use a valid magic link."), 401
def general_exception(e):
current_app.logger.error(f"Unhandled Exception: {e}", exc_info=True)
return render_template('error.html', message="An application error occurred."), 500
def template_not_found_error(error):
"""Handle Jinja2 TemplateNotFound exceptions."""
current_app.logger.error(f'Template not found: {error.name}')
current_app.logger.error(f'Search Paths: {current_app.jinja_loader.list_templates()}')
current_app.logger.error(traceback.format_exc())
return render_template('error.html', message="Template not found."), 404
def template_syntax_error(error):
"""Handle Jinja2 TemplateSyntaxError exceptions."""
current_app.logger.error(f'Template syntax error: {error.message}')
current_app.logger.error(f'In template {error.filename}, line {error.lineno}')
current_app.logger.error(traceback.format_exc())
return render_template('error.html', message="Template syntax error."), 500
def register_error_handlers(app):
app.register_error_handler(404, not_found_error)
app.register_error_handler(500, internal_server_error)
app.register_error_handler(401, not_authorised_error)
app.register_error_handler(403, not_authorised_error)
app.register_error_handler(EveAINoSessionTenant, no_tenant_selected_error)
app.register_error_handler(KeyError, key_error_handler)
app.register_error_handler(AttributeError, attribute_error_handler)
app.register_error_handler(jinja2.TemplateNotFound, template_not_found_error)
app.register_error_handler(jinja2.TemplateSyntaxError, template_syntax_error)
app.register_error_handler(Exception, general_exception)