from lms.lib.comment_client import CommentClientRequestError from django_comment_client.utils import JsonError import json import logging log = logging.getLogger(__name__) class AjaxExceptionMiddleware(object): """ Middleware that captures CommentClientRequestErrors during ajax requests and tranforms them into json responses """ def process_exception(self, request, exception): """ Processes CommentClientRequestErrors in ajax requests. If the request is an ajax request, returns a http response that encodes the error as json """ if isinstance(exception, CommentClientRequestError) and request.is_ajax(): try: return JsonError(json.loads(exception.message), exception.status_code) except ValueError: return JsonError(exception.message, exception.status_code) return None