I am trying to build a user table with flask-appbuilder and want to log any insert,update,delete changes on this table. My code below extends the Auditmixin so that I will have auto columns to record who/when create/update the table, but I can't record the row change history for audit.
How can I add something like listener in Flask-appbuilder to trigger the logging to file or database?
model.py
from flask_appbuilder import Model
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship
from flask_appbuilder.models.mixins import AuditMixin
class MyGenericModel(AuditMixin, Model):
id = Column(Integer, primary_key=True)
age = Column(Integer)
name = Column(String(100))
view.py
from flask import render_template
from flask_appbuilder.models.sqla.interface import SQLAInterface
from flask_appbuilder import ModelView, ModelRestApi
from . import appbuilder, db
from app.models import MyGenericModel
class MyModelView(ModelView):
datamodel = SQLAInterface(MyGenericModel)
@appbuilder.app.errorhandler(404)
def page_not_found(e):
return (
render_template(
"404.html", base_template=appbuilder.base_template, appbuilder=appbuilder
),
404,
)
db.create_all()
appbuilder.add_view(
MyModelView,
"My View",
icon="fa-folder-open-o",
category="My Category",
category_icon='fa-envelope'
)
Thank you in advance.