Middleware¶
Shortcuts when using django-reversion in views.
reversion.middleware.RevisionMiddleware¶
Wrap every request in a revision block.
The request user will also be added to the revision metadata.
To enable RevisionMiddleware
, add 'reversion.middleware.RevisionMiddleware'
to your MIDDLEWARE
setting.
Warning
This will wrap every request that meets the specified criterion in a database transaction. For best performance, consider marking individual views instead.
RevisionMiddleware.manage_manually = False
If
True
, versions will not be saved when a model’ssave()
method is called. This allows version control to be switched off for a given revision block.
RevisionMiddleware.using = None
The database to save the revision data. The revision block will be wrapped in a transaction using this database. If
None
, the default database for reversion.models.Revision will be used.
RevisionMiddleware.atomic = True
If
True
, the revision block will be wrapped in atransaction.atomic()
.
RevisionMiddleware.request_creates_revision(request)
By default, any request that isn’t
GET
,HEAD
orOPTIONS
will be wrapped in a revision block. Override this method if you need to apply a custom rule.For example:
from reversion.middleware import RevisionMiddleware class BypassRevisionMiddleware(RevisionMiddleware): def request_creates_revision(self, request): # Bypass the revision according to some header silent = request.META.get("HTTP_X_NOREVISION", "false") return super().request_creates_revision(request) and \ silent != "true"