From 7b9cb41a091119d23a1226f1f612649b2d64709d Mon Sep 17 00:00:00 2001
From: Mike Lundy <mike@fluffypenguin.org>
Date: Sun, 22 Mar 2009 18:02:18 -0500
Subject: [PATCH] pass render_to_response status param through to HttpResponse

---
 django/shortcuts/__init__.py                       |    2 +-
 .../regressiontests/test_client_regress/models.py  |    7 +++++++
 tests/regressiontests/test_client_regress/urls.py  |    1 +
 tests/regressiontests/test_client_regress/views.py |    4 ++++
 4 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/django/shortcuts/__init__.py b/django/shortcuts/__init__.py
index 1cece7c..ffd30e8 100644
--- a/django/shortcuts/__init__.py
+++ b/django/shortcuts/__init__.py
@@ -14,7 +14,7 @@ def render_to_response(*args, **kwargs):
     Returns a HttpResponse whose content is filled with the result of calling
     django.template.loader.render_to_string() with the passed arguments.
     """
-    httpresponse_kwargs = {'mimetype': kwargs.pop('mimetype', None)}
+    httpresponse_kwargs = dict([(k, kwargs.pop(k, None)) for k in ('mimetype', 'status')])
     return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
 
 def _get_queryset(klass):
diff --git a/tests/regressiontests/test_client_regress/models.py b/tests/regressiontests/test_client_regress/models.py
index 5d65092..d225bdd 100644
--- a/tests/regressiontests/test_client_regress/models.py
+++ b/tests/regressiontests/test_client_regress/models.py
@@ -594,3 +594,10 @@ class QueryStringTests(TestCase):
         self.assertEqual(response.context['post-bar'], 'bang')
         self.assertEqual(response.context['request-foo'], 'whiz')
         self.assertEqual(response.context['request-bar'], 'bang')
+
+    def test_get_error_requests(self):
+        response = self.client.get("/test_client_regress/request_error/", data={'status': 200})
+        self.assertEqual(response.status_code, 200)
+
+        response = self.client.get("/test_client_regress/request_error/", data={'status': 404})
+        self.assertEqual(response.status_code, 404)
diff --git a/tests/regressiontests/test_client_regress/urls.py b/tests/regressiontests/test_client_regress/urls.py
index 0f9082d..f68ed03 100644
--- a/tests/regressiontests/test_client_regress/urls.py
+++ b/tests/regressiontests/test_client_regress/urls.py
@@ -8,6 +8,7 @@ urlpatterns = patterns('',
     (r'^get_view/$', views.get_view),
     (r'^request_data/$', views.request_data),
     (r'^request_data_extended/$', views.request_data, {'template':'extended.html', 'data':'bacon'}),
+    (r'^request_error/$', views.request_error),
     url(r'^arg_view/(?P<name>.+)/$', views.view_with_argument, name='arg_view'),
     (r'^login_protected_redirect_view/$', views.login_protected_redirect_view),
     (r'^redirects/$', redirect_to, {'url': '/test_client_regress/redirects/further/'}),
diff --git a/tests/regressiontests/test_client_regress/views.py b/tests/regressiontests/test_client_regress/views.py
index bd0b8af..ede7029 100644
--- a/tests/regressiontests/test_client_regress/views.py
+++ b/tests/regressiontests/test_client_regress/views.py
@@ -31,6 +31,10 @@ def request_data(request, template='base.html', data='sausage'):
         'data': data,
     })
 
+def request_error(request, template='base.html'):
+    "A simple view that returns the given status code"
+    return render_to_response(template, {}, status=int(request.REQUEST.get('status', 200)))
+
 def view_with_argument(request, name):
     """A view that takes a string argument
 
-- 
1.6.1.2

