Django

Code

Changeset 5242

Show
Ignore:
Timestamp:
05/14/07 16:50:38 (1 year ago)
Author:
mtredinnick
Message:

unicode: Fixed handling of unicode data passed to test client. Refs #3432.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/unicode/django/test/client.py

    r5185 r5242  
    1414from django.test import signals 
    1515from django.utils.functional import curry 
     16from django.utils.encoding import smart_str 
    1617 
    1718BOUNDARY = 'BoUnDaRyStRiNg' 
     
    6263    """ 
    6364    lines = [] 
     65    to_str = lambda s: smart_str(s, settings.DEFAULT_CHARSET) 
    6466    for (key, value) in data.items(): 
    6567        if isinstance(value, file): 
    6668            lines.extend([ 
    6769                '--' + boundary, 
    68                 'Content-Disposition: form-data; name="%s"' % key
     70                'Content-Disposition: form-data; name="%s"' % to_str(key)
    6971                '', 
    7072                '--' + boundary, 
    71                 'Content-Disposition: form-data; name="%s_file"; filename="%s"' % (key, value.name), 
     73                'Content-Disposition: form-data; name="%s_file"; filename="%s"' % (to_str(key), to_str(value.name)), 
    7274                'Content-Type: application/octet-stream', 
    7375                '', 
    7476                value.read() 
    7577            ]) 
    76         elif hasattr(value, '__iter__'):  
     78        elif hasattr(value, '__iter__'): 
    7779            for item in value: 
    78                 lines.extend([  
    79                     '--' + boundary,  
    80                     'Content-Disposition: form-data; name="%s"' % key,  
    81                     '',  
    82                     str(item)  
     80                lines.extend([ 
     81                    '--' + boundary, 
     82                    'Content-Disposition: form-data; name="%s"' % to_str(key), 
     83                    '', 
     84                    to_str(item) 
    8385                ]) 
    8486        else: 
    8587            lines.extend([ 
    8688                '--' + boundary, 
    87                 'Content-Disposition: form-data; name="%s"' % key
     89                'Content-Disposition: form-data; name="%s"' % to_str(key)
    8890                '', 
    89                 str(value) 
     91                to_str(value) 
    9092            ]) 
    9193 
     
    119121        self.cookies = SimpleCookie() 
    120122        self.exc_info = None 
    121          
     123 
    122124    def store_exc_info(self, *args, **kwargs): 
    123125        """ 
     
    135137        return {} 
    136138    session = property(_session) 
    137      
     139 
    138140    def request(self, **request): 
    139141        """ 
     
    183185        if self.exc_info: 
    184186            raise self.exc_info[1], None, self.exc_info[2] 
    185          
     187 
    186188        # Update persistent cookie data 
    187189        if response.cookies: 
     
    247249            # Set the session values 
    248250            Session.objects.save(obj.session_key, request.session._session, 
    249                 datetime.datetime.now() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE))         
     251                datetime.datetime.now() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE)) 
    250252 
    251253            return True 
    252254        else: 
    253255            return False 
    254              
     256