~smoser/ubuntu/wily/maas/lp1474417

« back to all changes in this revision

Viewing changes to src/maasserver/middleware.py

  • Committer: Package Import Robot
  • Author(s): Andres Rodriguez
  • Date: 2013-10-04 12:33:05 UTC
  • mto: (1.4.1)
  • mto: This revision was merged to the branch mainline in revision 40.
  • Revision ID: package-import@ubuntu.com-20131004123305-vzkyhovgnvn1arco
Tags: upstream-1.4+bzr1693+dfsg
ImportĀ upstreamĀ versionĀ 1.4+bzr1693+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
9
9
 
10
10
"""Access middleware."""
11
11
 
 
12
str = None
 
13
 
12
14
__metaclass__ = type
13
15
__all__ = [
14
16
    "AccessMiddleware",
23
25
    )
24
26
import httplib
25
27
import json
 
28
import logging
26
29
import re
27
30
 
28
31
from django.conf import settings
38
41
    HttpResponseForbidden,
39
42
    HttpResponseRedirect,
40
43
    )
 
44
from django.http.request import build_request_repr
41
45
from django.utils.http import urlquote_plus
42
46
from maasserver import logger
43
47
from maasserver.exceptions import (
44
48
    ExternalComponentException,
45
49
    MAASAPIException,
46
50
    )
47
 
from maasserver.models import Config
48
51
 
49
52
 
50
53
def get_relative_path(path):
217
220
 
218
221
class DebuggingLoggerMiddleware:
219
222
 
 
223
    log_level = logging.DEBUG
 
224
 
220
225
    def process_request(self, request):
221
 
        if Config.objects.get_config("request_log_debug"):
 
226
        if logger.isEnabledFor(self.log_level):
222
227
            header = " Request dump ".center(79, "#")
223
 
            logger.info("%s\n%r\n%s", header, request, request.content)
 
228
            logger.log(
 
229
                self.log_level,
 
230
                "%s\n%s", header, build_request_repr(request))
224
231
        return None  # Allow request processing to continue unabated.
225
232
 
226
233
    def process_response(self, request, response):
227
 
        if Config.objects.get_config("response_log_debug"):
 
234
        if logger.isEnabledFor(self.log_level):
228
235
            header = " Response dump ".center(79, "#")
229
236
            content = getattr(response, "content", "{no content}")
230
 
            logger.info("%s\n%r\n%s", header, response, content)
 
237
            try:
 
238
                decoded_content = content.decode('utf-8')
 
239
            except UnicodeDecodeError:
 
240
                logger.log(
 
241
                    self.log_level,
 
242
                    "%s\n%s", header, "** non-utf-8 (binary?) content **")
 
243
            else:
 
244
                logger.log(
 
245
                    self.log_level,
 
246
                    "%s\n%s", header, decoded_content)
231
247
        return response  # Return response unaltered.