From 8dc4a249868fe765475f9167332621a13d594f04 Mon Sep 17 00:00:00 2001 From: Benjamin Bertrand <benjamin.bertrand@esss.se> Date: Sun, 12 Nov 2017 22:23:13 +0100 Subject: [PATCH] Fix admin interface - replace TextAreaField by StringField for several Text columns - add filter to replace empty string by None on optional Text and INET fields --- app/admin/views.py | 40 +++++++++++++++++++++++++++++++++++++++- app/factory.py | 6 +++--- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/app/admin/views.py b/app/admin/views.py index 12fab59..27bb41a 100644 --- a/app/admin/views.py +++ b/app/admin/views.py @@ -60,9 +60,47 @@ class QRCodeAdmin(AdminModelView): class ItemAdmin(AdminModelView): + # Replace TextAreaField (default for Text) with StringField + form_overrides = { + 'ics_id': fields.StringField, + 'serial_number': fields.StringField, + } + form_args = { 'ics_id': { 'label': 'ICS id', - 'validators': [validators.Regexp(ICS_ID_RE, message='ICS id shall match [A-Z]{3}[0-9]{3}')] + 'validators': [validators.Regexp(ICS_ID_RE, message='ICS id shall match [A-Z]{3}[0-9]{3}')], + 'filters': [lambda x: x or None], + } + } + + +class NetworkAdmin(AdminModelView): + + # Replace TextAreaField (default for Text) with StringField + form_overrides = { + 'label': fields.StringField, + } + + form_args = { + 'label': { + 'filters': [lambda x: x or None], + }, + 'gateway': { + 'filters': [lambda x: x or None], + }, + } + + +class HostAdmin(AdminModelView): + + # Replace TextAreaField (default for Text) with StringField + form_overrides = { + 'name': fields.StringField, + } + + form_args = { + 'name': { + 'filters': [lambda x: x or None], } } diff --git a/app/factory.py b/app/factory.py index fde52fc..3e40240 100644 --- a/app/factory.py +++ b/app/factory.py @@ -14,7 +14,7 @@ from flask import Flask from whitenoise import WhiteNoise from . import settings, models from .extensions import db, migrate, login_manager, ldap_manager, bootstrap, admin, mail, jwt, toolbar -from .admin.views import AdminModelView, ItemAdmin, UserAdmin, GroupAdmin, QRCodeAdmin +from .admin.views import AdminModelView, ItemAdmin, UserAdmin, GroupAdmin, QRCodeAdmin, NetworkAdmin, HostAdmin from .main.views import bp as main from .users.views import bp as users from .api.main import bp as api @@ -100,8 +100,8 @@ def create_app(config=None): admin.add_view(QRCodeAdmin(models.Location, db.session)) admin.add_view(QRCodeAdmin(models.Status, db.session)) admin.add_view(ItemAdmin(models.Item, db.session)) - admin.add_view(AdminModelView(models.Network, db.session)) - admin.add_view(AdminModelView(models.Host, db.session)) + admin.add_view(NetworkAdmin(models.Network, db.session)) + admin.add_view(HostAdmin(models.Host, db.session)) admin.add_view(AdminModelView(models.Mac, db.session)) app.register_blueprint(main) -- GitLab