Source code for borgcube.web.core.middleware
import logging
from django.http import HttpResponseServerError
import transaction
from ZODB.POSException import StorageError
log = logging.getLogger(__name__)
[docs]def transaction_middleware(get_response):
"""
Calls `transaction.abort()` before and after obtaining a response.
"""
def middleware(request):
transaction.abort()
response = get_response(request)
transaction.abort()
return response
return middleware
[docs]class ZODBErrorMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
return self.get_response(request)
[docs] def process_exception(self, request, exception):
if isinstance(exception, StorageError):
msg = 'Database error: %s: %s' % (type(exception).__name__, exception)
log.error(msg)
return HttpResponseServerError(msg)