Replace reversion middleware with api view mixin.
This is done because django 1.6 has transactions at view level and current authentication is done at view level instead of using django auth middleware.remotes/origin/enhancement/email-actions
parent
6ea5a1acd5
commit
61ce2d1acc
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
|
|
||||||
|
from reversion.revisions import revision_context_manager
|
||||||
from rest_framework import viewsets
|
from rest_framework import viewsets
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework import mixins
|
from rest_framework import mixins
|
||||||
|
@ -79,7 +80,29 @@ class DetailAndListSerializersMixin(object):
|
||||||
return super().get_serializer_class()
|
return super().get_serializer_class()
|
||||||
|
|
||||||
|
|
||||||
|
class ReversionMixin(object):
|
||||||
|
def dispatch(self, request, *args, **kwargs):
|
||||||
|
revision_context_manager.start()
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = super().dispatch(request, *args, **kwargs)
|
||||||
|
except Exception as e:
|
||||||
|
revision_context_manager.invalidate()
|
||||||
|
revision_context_manager.end()
|
||||||
|
raise
|
||||||
|
|
||||||
|
if self.request.user.is_authenticated():
|
||||||
|
revision_context_manager.set_user(self.request.user)
|
||||||
|
|
||||||
|
if response.status_code > 206:
|
||||||
|
self._invalidare_revision()
|
||||||
|
|
||||||
|
revision_context_manager.end()
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
class ModelCrudViewSet(DetailAndListSerializersMixin,
|
class ModelCrudViewSet(DetailAndListSerializersMixin,
|
||||||
|
ReversionMixin,
|
||||||
PreconditionMixin,
|
PreconditionMixin,
|
||||||
HeadersPaginationMixin,
|
HeadersPaginationMixin,
|
||||||
ConditionalPaginationMixin,
|
ConditionalPaginationMixin,
|
||||||
|
@ -93,6 +116,7 @@ class ModelCrudViewSet(DetailAndListSerializersMixin,
|
||||||
|
|
||||||
|
|
||||||
class ModelListViewSet(DetailAndListSerializersMixin,
|
class ModelListViewSet(DetailAndListSerializersMixin,
|
||||||
|
ReversionMixin,
|
||||||
PreconditionMixin,
|
PreconditionMixin,
|
||||||
HeadersPaginationMixin,
|
HeadersPaginationMixin,
|
||||||
ConditionalPaginationMixin,
|
ConditionalPaginationMixin,
|
||||||
|
|
|
@ -155,7 +155,6 @@ MIDDLEWARE_CLASSES = [
|
||||||
'django.middleware.common.CommonMiddleware',
|
'django.middleware.common.CommonMiddleware',
|
||||||
'django.middleware.locale.LocaleMiddleware',
|
'django.middleware.locale.LocaleMiddleware',
|
||||||
'greenmine.base.middleware.CoorsMiddleware',
|
'greenmine.base.middleware.CoorsMiddleware',
|
||||||
'reversion.middleware.RevisionMiddleware',
|
|
||||||
|
|
||||||
# Only needed by django admin
|
# Only needed by django admin
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
|
|
Loading…
Reference in New Issue