mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2026-01-04 10:40:23 -06:00
47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
from flask import render_template, request, jsonify
|
|
from werkzeug.exceptions import HTTPException
|
|
import traceback
|
|
|
|
def register_error_handlers(app):
|
|
"""Register error handlers for the application"""
|
|
|
|
@app.errorhandler(404)
|
|
def not_found_error(error):
|
|
if request.path.startswith('/api/'):
|
|
return jsonify({'error': 'Not found'}), 404
|
|
return render_template('errors/404.html'), 404
|
|
|
|
@app.errorhandler(500)
|
|
def internal_error(error):
|
|
if request.path.startswith('/api/'):
|
|
return jsonify({'error': 'Internal server error'}), 500
|
|
return render_template('errors/500.html'), 500
|
|
|
|
@app.errorhandler(403)
|
|
def forbidden_error(error):
|
|
if request.path.startswith('/api/'):
|
|
return jsonify({'error': 'Forbidden'}), 403
|
|
return render_template('errors/403.html'), 403
|
|
|
|
@app.errorhandler(400)
|
|
def bad_request_error(error):
|
|
if request.path.startswith('/api/'):
|
|
return jsonify({'error': 'Bad request'}), 400
|
|
return render_template('errors/400.html'), 400
|
|
|
|
@app.errorhandler(HTTPException)
|
|
def handle_http_exception(error):
|
|
if request.path.startswith('/api/'):
|
|
return jsonify({'error': error.description}), error.code
|
|
return render_template('errors/generic.html', error=error), error.code
|
|
|
|
@app.errorhandler(Exception)
|
|
def handle_exception(error):
|
|
# Log the error
|
|
app.logger.error(f'Unhandled exception: {error}')
|
|
app.logger.error(traceback.format_exc())
|
|
|
|
if request.path.startswith('/api/'):
|
|
return jsonify({'error': 'Internal server error'}), 500
|
|
return render_template('errors/500.html'), 500
|