From e1ba38164a7050f95fc736c4cac52ab7d47cb4aa Mon Sep 17 00:00:00 2001 From: Benjamin Bertrand <benjamin.bertrand@esss.se> Date: Mon, 13 Nov 2017 13:59:27 +0100 Subject: [PATCH] Handle CSEntry exceptions in admin views Allow to use the same CSEntryError exceptions used for validation in the API and admin views. --- app/admin/views.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/admin/views.py b/app/admin/views.py index 15981da..2a10fd1 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 -- GitLab