Ticket #14939: ticket-14939-patch.diff

File ticket-14939-patch.diff, 3.0 KB (added by Andrew Godwin, 13 years ago)

Initial patch, without tests.

  • django/test/client.py

    # HG changeset patch
    # User Andrew Godwin <andrew@aeracode.org>
    # Date 1293036814 0
    # Branch ticket-14939
    # Node ID bac56f6f4aa0c4f9996f298218be09e1b0f6fe2d
    # Parent  35aeedea954d3291644a7377933443f50cdba77c
    Initial patch, without tests
    
    diff -r 35aeedea954d -r bac56f6f4aa0 django/test/client.py
    a b  
    203203        "Construct a generic request object."
    204204        return WSGIRequest(self._base_environ(**request))
    205205
     206    def _get_path(self, parsed):
     207        # If there are parameters, add them
     208        if parsed[3]:
     209            return urllib.unquote(parsed[2] + ";" + parsed[3])
     210        else:
     211            return urllib.unquote(parsed[2])
     212
    206213    def get(self, path, data={}, **extra):
    207214        "Construct a GET request"
    208215
    209216        parsed = urlparse(path)
    210217        r = {
    211218            'CONTENT_TYPE':    'text/html; charset=utf-8',
    212             'PATH_INFO':       urllib.unquote(parsed[2]),
     219            'PATH_INFO':       self._get_path(parsed),
    213220            'QUERY_STRING':    urlencode(data, doseq=True) or parsed[4],
    214221            'REQUEST_METHOD': 'GET',
    215222            'wsgi.input':      FakePayload('')
     
    236243        r = {
    237244            'CONTENT_LENGTH': len(post_data),
    238245            'CONTENT_TYPE':   content_type,
    239             'PATH_INFO':      urllib.unquote(parsed[2]),
     246            'PATH_INFO':      self._get_path(parsed),
    240247            'QUERY_STRING':   parsed[4],
    241248            'REQUEST_METHOD': 'POST',
    242249            'wsgi.input':     FakePayload(post_data),
     
    250257        parsed = urlparse(path)
    251258        r = {
    252259            'CONTENT_TYPE':    'text/html; charset=utf-8',
    253             'PATH_INFO':       urllib.unquote(parsed[2]),
     260            'PATH_INFO':       self._get_path(parsed),
    254261            'QUERY_STRING':    urlencode(data, doseq=True) or parsed[4],
    255262            'REQUEST_METHOD': 'HEAD',
    256263            'wsgi.input':      FakePayload('')
     
    263270
    264271        parsed = urlparse(path)
    265272        r = {
    266             'PATH_INFO':       urllib.unquote(parsed[2]),
     273            'PATH_INFO':       self._get_path(parsed),
    267274            'QUERY_STRING':    urlencode(data, doseq=True) or parsed[4],
    268275            'REQUEST_METHOD': 'OPTIONS',
    269276            'wsgi.input':      FakePayload('')
     
    290297        r = {
    291298            'CONTENT_LENGTH': len(post_data),
    292299            'CONTENT_TYPE':   content_type,
    293             'PATH_INFO':      urllib.unquote(parsed[2]),
     300            'PATH_INFO':      self._get_path(parsed),
    294301            'QUERY_STRING':   query_string or parsed[4],
    295302            'REQUEST_METHOD': 'PUT',
    296303            'wsgi.input':     FakePayload(post_data),
     
    303310
    304311        parsed = urlparse(path)
    305312        r = {
    306             'PATH_INFO':       urllib.unquote(parsed[2]),
     313            'PATH_INFO':       self._get_path(parsed),
    307314            'QUERY_STRING':    urlencode(data, doseq=True) or parsed[4],
    308315            'REQUEST_METHOD': 'DELETE',
    309316            'wsgi.input':      FakePayload('')
Back to Top