summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2011-04-02 08:50:05 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2011-04-02 08:50:05 +0000
commit686ef6c7596ca1fcfde01212ca3ebcdeb9378e74 (patch)
tree2fe85e4530de10c60ba6b5b03cc4525cf44982f4
parente6fe336f10d461b84989a88786a8fd0bfb489a3e (diff)
[1.3.X] Fixed #15739 -- Added support to RedirectView for HEAD, OPTIONS, POST, PUT and DELETE requests
Backport of r15992 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.3.X@15995 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/views/generic/base.py15
-rw-r--r--tests/regressiontests/generic_views/base.py30
2 files changed, 45 insertions, 0 deletions
diff --git a/django/views/generic/base.py b/django/views/generic/base.py
index d732af5d66..1ac7fb89ee 100644
--- a/django/views/generic/base.py
+++ b/django/views/generic/base.py
@@ -161,3 +161,18 @@ class RedirectView(View):
'request': self.request
})
return http.HttpResponseGone()
+
+ def head(self, request, *args, **kwargs):
+ return self.get(request, *args, **kwargs)
+
+ def post(self, request, *args, **kwargs):
+ return self.get(request, *args, **kwargs)
+
+ def options(self, request, *args, **kwargs):
+ return self.get(request, *args, **kwargs)
+
+ def delete(self, request, *args, **kwargs):
+ return self.get(request, *args, **kwargs)
+
+ def put(self, request, *args, **kwargs):
+ return self.get(request, *args, **kwargs)
diff --git a/tests/regressiontests/generic_views/base.py b/tests/regressiontests/generic_views/base.py
index e20932b7fe..4003bbe732 100644
--- a/tests/regressiontests/generic_views/base.py
+++ b/tests/regressiontests/generic_views/base.py
@@ -261,3 +261,33 @@ class RedirectViewTest(unittest.TestCase):
response = RedirectView.as_view(url='/bar/%(object_id)d/')(self.rf.get('/foo/42/'), object_id=42)
self.assertEqual(response.status_code, 301)
self.assertEqual(response['Location'], '/bar/42/')
+
+ def test_redirect_POST(self):
+ "Default is a permanent redirect"
+ response = RedirectView.as_view(url='/bar/')(self.rf.post('/foo/'))
+ self.assertEqual(response.status_code, 301)
+ self.assertEqual(response['Location'], '/bar/')
+
+ def test_redirect_HEAD(self):
+ "Default is a permanent redirect"
+ response = RedirectView.as_view(url='/bar/')(self.rf.head('/foo/'))
+ self.assertEqual(response.status_code, 301)
+ self.assertEqual(response['Location'], '/bar/')
+
+ def test_redirect_OPTIONS(self):
+ "Default is a permanent redirect"
+ response = RedirectView.as_view(url='/bar/')(self.rf.options('/foo/'))
+ self.assertEqual(response.status_code, 301)
+ self.assertEqual(response['Location'], '/bar/')
+
+ def test_redirect_PUT(self):
+ "Default is a permanent redirect"
+ response = RedirectView.as_view(url='/bar/')(self.rf.put('/foo/'))
+ self.assertEqual(response.status_code, 301)
+ self.assertEqual(response['Location'], '/bar/')
+
+ def test_redirect_DELETE(self):
+ "Default is a permanent redirect"
+ response = RedirectView.as_view(url='/bar/')(self.rf.delete('/foo/'))
+ self.assertEqual(response.status_code, 301)
+ self.assertEqual(response['Location'], '/bar/')