Flask-appbuilder how to add audit logging for any row changes on a table?

Viewed 659

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.

0 Answers
Related