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 reversion.revisions import revision_context_manager
|
||||
from rest_framework import viewsets
|
||||
from rest_framework import status
|
||||
from rest_framework import mixins
|
||||
|
@ -79,7 +80,29 @@ class DetailAndListSerializersMixin(object):
|
|||
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,
|
||||
ReversionMixin,
|
||||
PreconditionMixin,
|
||||
HeadersPaginationMixin,
|
||||
ConditionalPaginationMixin,
|
||||
|
@ -93,6 +116,7 @@ class ModelCrudViewSet(DetailAndListSerializersMixin,
|
|||
|
||||
|
||||
class ModelListViewSet(DetailAndListSerializersMixin,
|
||||
ReversionMixin,
|
||||
PreconditionMixin,
|
||||
HeadersPaginationMixin,
|
||||
ConditionalPaginationMixin,
|
||||
|
|
|
@ -155,7 +155,6 @@ MIDDLEWARE_CLASSES = [
|
|||
'django.middleware.common.CommonMiddleware',
|
||||
'django.middleware.locale.LocaleMiddleware',
|
||||
'greenmine.base.middleware.CoorsMiddleware',
|
||||
'reversion.middleware.RevisionMiddleware',
|
||||
|
||||
# Only needed by django admin
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
|
|
Loading…
Reference in New Issue