API¶
Base¶
-
class
flask_continuum.
Continuum
(app=None, db=None, migrate=None, user_cls=None, engine=None, current_user=<function fetch_current_user_id>, plugins=[])¶ Flask extension class for module, which sets up all flask-related capabilities provided by the module. This object can be initialized directly:
from flask import Flask from flask_version import Version app = Flask(__name__) db = SQLAlchemy() continuum = Continuum(app, db)
Or lazily via factory pattern:
db = SQLAlchemy() continuum = Continuum(db=db) app = Flask(__name__) continuum.init_app(app)
To configure SQLAlchemy-Continuum with additional plugins, use the
plugins
argument to the extension:from sqlalchemy.continuum.plugins import PropertyModTrackerPlugin db = SQLAlchemy() continuum = Continuum(db=db, plugins=[PropertyModTrackerPlugin()]) app = Flask(__name__) continuum.init_app(app)
You can also use this plugin with sqlalchemy directly (i.e. not using Flask-SQLAlchemy). To do so, simply pass the database engine to this plugin upon instantiation:
engine = create_engine('postgresql://...') continuum = Continuum(engine=engine) app = Flask(__name__) continuum.init_app(app)
Finally, to associate all transactions with users from a user table in the application database, you can set the user_cls parameter to the name of the table where users are stored:
app = Flask(__name__) db = SQLAlchemy(app) continuum = Continuum(app, db, user_cls='Users')
- Arguments:
app (Flask): Flask application to associate with plugin. db (SQLAlchemy): SQLAlchemy extension to associate with plugin. user_cls (str): Name of user class used in application. engine (Engine): SQLAlchemy engine to associate with plugin. current_user (callable): Callable object to determine user associated
with request.- plugins (list): List of other SQLAlchemy-Continuum plugins to install.
- See: `https://sqlalchemy-continuum.readthedocs.io/en/latest/plugins.html`_ for more information.
-
init_app
(app, db=None)¶ Initialize application via lazy factory pattern.
- Args:
- app (Flask): Flask application. db (SQAlchemy): Flask SQLAlchemy extension.
Databse Mixins¶
-
class
flask_continuum.
VersioningMixin
¶ Database mixin adding versioning support and additional helper methods to content models in application. To use this mixin in a model, you can configure it like so:
class Article(db.Model, VersioningMixin): __tablename__ = 'article' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.Unicode(255)) content = db.Column(db.UnicodeText) updated_at = db.Column(db.DateTime, default=datetime.now) created_at = db.Column(db.DateTime, onupdate=datetime.now)
This will implicitly add versioning support to the model.
-
changeset
¶ Return SQLAlchemy-Continuum changeset for object.
-
modified
¶ Return boolean describing if object has been modified.
-
records
¶ Return list of records in versioning history.
-