diff --git a/app/admin/views.py b/app/admin/views.py index 15981da91aa997195f91fe3c343f8ab45d8705ee..2a10fd119a7df91d9d60120e377c2ab842ebcc21 100644 --- a/app/admin/views.py +++ b/app/admin/views.py @@ -10,11 +10,13 @@ This module customizes the admin views. """ from wtforms import validators, fields +from flask import current_app, flash from flask_admin.contrib import sqla from flask_admin.model.form import converts from flask_login import current_user from .validators import IPNetwork from ..models import ICS_ID_RE +from ..utils import CSEntryError # Monkey patch flask-admin Unique validator to disable it @@ -46,6 +48,16 @@ class AdminModelView(sqla.ModelView): def is_accessible(self): return current_user.is_authenticated and current_user.is_admin + def handle_view_exception(self, exc): + """Handle CSEntryError exceptions in admin views""" + if isinstance(exc, CSEntryError): + if current_app.config.get('ADMIN_RAISE_ON_VIEW_EXCEPTION'): + raise + else: + flash(f'CSEntry error: {exc.message}', 'error') + return True + return super().handle_view_exception(exc) + class GroupAdmin(AdminModelView): can_create = False