Author: mtredinnick
Date: 2007-05-14 16:50:38 -0500 (Mon, 14 May 2007)
New Revision: 5242

Modified:
   django/branches/unicode/django/test/client.py
Log:
unicode: Fixed handling of unicode data passed to test client. Refs #3432.


Modified: django/branches/unicode/django/test/client.py
===================================================================
--- django/branches/unicode/django/test/client.py       2007-05-14 19:42:13 UTC 
(rev 5241)
+++ django/branches/unicode/django/test/client.py       2007-05-14 21:50:38 UTC 
(rev 5242)
@@ -13,6 +13,7 @@
 from django.http import urlencode, SimpleCookie, HttpRequest
 from django.test import signals
 from django.utils.functional import curry
+from django.utils.encoding import smart_str
 
 BOUNDARY = 'BoUnDaRyStRiNg'
 MULTIPART_CONTENT = 'multipart/form-data; boundary=%s' % BOUNDARY
@@ -61,32 +62,33 @@
     as an application/octet-stream; otherwise, str(value) will be sent.
     """
     lines = []
+    to_str = lambda s: smart_str(s, settings.DEFAULT_CHARSET)
     for (key, value) in data.items():
         if isinstance(value, file):
             lines.extend([
                 '--' + boundary,
-                'Content-Disposition: form-data; name="%s"' % key,
+                'Content-Disposition: form-data; name="%s"' % to_str(key),
                 '',
                 '--' + boundary,
-                'Content-Disposition: form-data; name="%s_file"; 
filename="%s"' % (key, value.name),
+                'Content-Disposition: form-data; name="%s_file"; 
filename="%s"' % (to_str(key), to_str(value.name)),
                 'Content-Type: application/octet-stream',
                 '',
                 value.read()
             ])
-        elif hasattr(value, '__iter__'): 
+        elif hasattr(value, '__iter__'):
             for item in value:
-                lines.extend([ 
-                    '--' + boundary, 
-                    'Content-Disposition: form-data; name="%s"' % key, 
-                    '', 
-                    str(item) 
+                lines.extend([
+                    '--' + boundary,
+                    'Content-Disposition: form-data; name="%s"' % to_str(key),
+                    '',
+                    to_str(item)
                 ])
         else:
             lines.extend([
                 '--' + boundary,
-                'Content-Disposition: form-data; name="%s"' % key,
+                'Content-Disposition: form-data; name="%s"' % to_str(key),
                 '',
-                str(value)
+                to_str(value)
             ])
 
     lines.extend([
@@ -118,7 +120,7 @@
         self.defaults = defaults
         self.cookies = SimpleCookie()
         self.exc_info = None
-        
+
     def store_exc_info(self, *args, **kwargs):
         """
         Utility method that can be used to store exceptions when they are
@@ -134,7 +136,7 @@
                 return SessionWrapper(cookie.value)
         return {}
     session = property(_session)
-    
+
     def request(self, **request):
         """
         The master request method. Composes the environment dictionary
@@ -182,7 +184,7 @@
         # Look for a signalled exception and reraise it
         if self.exc_info:
             raise self.exc_info[1], None, self.exc_info[2]
-        
+
         # Update persistent cookie data
         if response.cookies:
             self.cookies.update(response.cookies)
@@ -246,9 +248,9 @@
 
             # Set the session values
             Session.objects.save(obj.session_key, request.session._session,
-                datetime.datetime.now() + 
datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE))        
+                datetime.datetime.now() + 
datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE))
 
             return True
         else:
             return False
-            
\ No newline at end of file
+


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to