Django

Code

Changeset 6550

Show
Ignore:
Timestamp:
10/20/07 02:42:34 (11 months ago)
Author:
mtredinnick
Message:

Slightly changed the way we handle non-UTF-8 encoded URIs (see [6475]). Made it
easier to subclass the current behaviour, if needed. Fixed #5738.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/core/handlers/modpython.py

    r6475 r6550  
    1515    def __init__(self, req): 
    1616        self._req = req 
    17         self.path = force_unicode(req.uri, errors='ignore'
     17        self.path = force_unicode(req.uri
    1818 
    1919    def __repr__(self): 
     
    137137 
    138138class ModPythonHandler(BaseHandler): 
     139    request_class = ModPythonRequest 
     140 
    139141    def __call__(self, req): 
    140142        # mod_python fakes the environ, and thus doesn't process SetEnv.  This fixes that 
     
    151153        dispatcher.send(signal=signals.request_started) 
    152154        try: 
    153             request = ModPythonRequest(req) 
    154             response = self.get_response(request) 
     155            try: 
     156                request = self.request_class(req) 
     157            except UnicodeDecodeError: 
     158                response = http.HttpResponseBadRequest() 
     159            else: 
     160                response = self.get_response(request) 
    155161 
    156             # Apply response middleware 
    157             for middleware_method in self._response_middleware: 
    158                 response = middleware_method(request, response) 
    159  
     162                # Apply response middleware 
     163                for middleware_method in self._response_middleware: 
     164                    response = middleware_method(request, response) 
    160165        finally: 
    161166            dispatcher.send(signal=signals.request_finished) 
  • django/trunk/django/core/handlers/wsgi.py

    r6475 r6550  
    7676    def __init__(self, environ): 
    7777        self.environ = environ 
    78         self.path = force_unicode(environ['PATH_INFO'], errors='ignore'
     78        self.path = force_unicode(environ['PATH_INFO']
    7979        self.META = environ 
    8080        self.method = environ['REQUEST_METHOD'].upper() 
     
    180180class WSGIHandler(BaseHandler): 
    181181    initLock = Lock() 
     182    request_class = WSGIRequest 
    182183 
    183184    def __call__(self, environ, start_response): 
     
    195196        dispatcher.send(signal=signals.request_started) 
    196197        try: 
    197             request = WSGIRequest(environ) 
    198             response = self.get_response(request) 
    199  
    200             # Apply response middleware 
    201             for middleware_method in self._response_middleware: 
    202                 response = middleware_method(request, response) 
    203  
     198            try: 
     199                request = self.request_class(environ) 
     200            except UnicodeDecodeError: 
     201                response = http.HttpResponseBadRequest() 
     202            else: 
     203                response = self.get_response(request) 
     204 
     205                # Apply response middleware 
     206                for middleware_method in self._response_middleware: 
     207                    response = middleware_method(request, response) 
    204208        finally: 
    205209            dispatcher.send(signal=signals.request_finished)