Author: mtredinnick
Date: 2009-04-11 22:54:49 -0500 (Sat, 11 Apr 2009)
New Revision: 10540

Added:
   django/branches/releases/1.0.X/tests/regressiontests/views/tests/specials.py
Modified:
   django/branches/releases/1.0.X/django/http/__init__.py
   django/branches/releases/1.0.X/tests/regressiontests/views/tests/__init__.py
   django/branches/releases/1.0.X/tests/regressiontests/views/urls.py
   django/branches/releases/1.0.X/tests/regressiontests/views/views.py
Log:
[1.0.X] Fixed #10267 -- Correctly handle IRIs in 
HttpResponse.build_absolute_uri().

Backport of r10539 from trunk.

Modified: django/branches/releases/1.0.X/django/http/__init__.py
===================================================================
--- django/branches/releases/1.0.X/django/http/__init__.py      2009-04-12 
03:50:47 UTC (rev 10539)
+++ django/branches/releases/1.0.X/django/http/__init__.py      2009-04-12 
03:54:49 UTC (rev 10540)
@@ -72,7 +72,7 @@
             current_uri = '%s://%s%s' % (self.is_secure() and 'https' or 
'http',
                                          self.get_host(), self.path)
             location = urljoin(current_uri, location)
-        return location
+        return iri_to_uri(location)
 
     def is_secure(self):
         return os.environ.get("HTTPS") == "on"
@@ -398,14 +398,14 @@
 
     def __init__(self, redirect_to):
         HttpResponse.__init__(self)
-        self['Location'] = iri_to_uri(redirect_to)
+        self['Location'] = redirect_to
 
 class HttpResponsePermanentRedirect(HttpResponse):
     status_code = 301
 
     def __init__(self, redirect_to):
         HttpResponse.__init__(self)
-        self['Location'] = iri_to_uri(redirect_to)
+        self['Location'] = redirect_to
 
 class HttpResponseNotModified(HttpResponse):
     status_code = 304

Modified: 
django/branches/releases/1.0.X/tests/regressiontests/views/tests/__init__.py
===================================================================
--- 
django/branches/releases/1.0.X/tests/regressiontests/views/tests/__init__.py    
    2009-04-12 03:50:47 UTC (rev 10539)
+++ 
django/branches/releases/1.0.X/tests/regressiontests/views/tests/__init__.py    
    2009-04-12 03:54:49 UTC (rev 10540)
@@ -1,5 +1,7 @@
 from defaults import *
+from generic.create_update import *
+from generic.date_based import *
 from i18n import *
+from specials import *
 from static import *
-from generic.date_based import *
-from generic.create_update import *
+

Added: 
django/branches/releases/1.0.X/tests/regressiontests/views/tests/specials.py
===================================================================
--- 
django/branches/releases/1.0.X/tests/regressiontests/views/tests/specials.py    
                            (rev 0)
+++ 
django/branches/releases/1.0.X/tests/regressiontests/views/tests/specials.py    
    2009-04-12 03:54:49 UTC (rev 10540)
@@ -0,0 +1,15 @@
+# coding: utf-8
+from django.test import TestCase
+
+class URLHandling(TestCase):
+    """
+    Tests for URL handling in views and responses.
+    """
+    def test_iri_redirect(self):
+        """
+        Tests that redirecting to an IRI, requiring encoding before we use it
+        in an HTTP response, is handled correctly.
+        """
+        response = self.client.get(u'/views/中文/')
+        self.assertRedirects(response, "/views/%E4%B8%AD%E6%96%87/target/")
+

Modified: django/branches/releases/1.0.X/tests/regressiontests/views/urls.py
===================================================================
--- django/branches/releases/1.0.X/tests/regressiontests/views/urls.py  
2009-04-12 03:50:47 UTC (rev 10539)
+++ django/branches/releases/1.0.X/tests/regressiontests/views/urls.py  
2009-04-12 03:54:49 UTC (rev 10540)
@@ -1,3 +1,4 @@
+# coding: utf-8
 from os import path
 
 from django.conf.urls.defaults import *
@@ -38,6 +39,10 @@
 
     # Static views
     (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', 
{'document_root': media_dir}),
+
+    # Special URLs for particular regression cases.
+    url(u'^中文/$', 'regressiontests.views.views.redirect'),
+    url(u'^中文/target/$', 'regressiontests.views.views.index_page'),
 )
 
 # Date-based generic views.

Modified: django/branches/releases/1.0.X/tests/regressiontests/views/views.py
===================================================================
--- django/branches/releases/1.0.X/tests/regressiontests/views/views.py 
2009-04-12 03:50:47 UTC (rev 10539)
+++ django/branches/releases/1.0.X/tests/regressiontests/views/views.py 
2009-04-12 03:54:49 UTC (rev 10540)
@@ -1,4 +1,4 @@
-from django.http import HttpResponse
+from django.http import HttpResponse, HttpResponseRedirect
 from django import forms
 from django.views.generic.create_update import create_object
 
@@ -27,3 +27,10 @@
     return create_object(request,
         post_save_redirect='/views/create_update/view/article/%(slug)s/',
         form_class=SlugChangingArticleForm)
+
+def redirect(request):
+    """
+    Forces an HTTP redirect.
+    """
+    return HttpResponseRedirect("target/")
+


--~--~---------~--~----~------------~-------~--~----~
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