aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Padilla2015-01-27 21:21:42 -0400
committerJosé Padilla2015-01-27 21:21:42 -0400
commit8f33e39f62c59d06783dd3e6e7cf8d464ff08c5f (patch)
treed65e6e29c0aa75e2af1b4d377fba509bfbfb066f
parent107198af943aadba686ceeac0976b09366983007 (diff)
parentac87490b91e3405d497da360afed10842a73dfd0 (diff)
downloaddjango-rest-framework-8f33e39f62c59d06783dd3e6e7cf8d464ff08c5f.tar.bz2
Merge pull request #2478 from brandoncazander/version-3.1
Clone the versioning_scheme when necessary. Fixes #2477
-rw-r--r--rest_framework/request.py2
-rw-r--r--tests/test_metadata.py17
2 files changed, 18 insertions, 1 deletions
diff --git a/rest_framework/request.py b/rest_framework/request.py
index ce2fcb47..bf6ff670 100644
--- a/rest_framework/request.py
+++ b/rest_framework/request.py
@@ -109,6 +109,8 @@ def clone_request(request, method):
ret.accepted_media_type = request.accepted_media_type
if hasattr(request, 'version'):
ret.version = request.version
+ if hasattr(request, 'versioning_scheme'):
+ ret.versioning_scheme = request.versioning_scheme
return ret
diff --git a/tests/test_metadata.py b/tests/test_metadata.py
index bdc84edf..5031c0f3 100644
--- a/tests/test_metadata.py
+++ b/tests/test_metadata.py
@@ -1,5 +1,5 @@
from __future__ import unicode_literals
-from rest_framework import exceptions, serializers, status, views
+from rest_framework import exceptions, serializers, status, views, versioning
from rest_framework.request import Request
from rest_framework.renderers import BrowsableAPIRenderer
from rest_framework.test import APIRequestFactory
@@ -183,3 +183,18 @@ class TestMetadata:
view = ExampleView.as_view()
view(request=request)
+
+ def test_bug_2477_clone_request(self):
+ class ExampleView(views.APIView):
+ renderer_classes = (BrowsableAPIRenderer,)
+
+ def post(self, request):
+ pass
+
+ def get_serializer(self):
+ assert hasattr(self.request, 'versioning_scheme')
+ return serializers.Serializer()
+
+ scheme = versioning.QueryParameterVersioning
+ view = ExampleView.as_view(versioning_class=scheme)
+ view(request=request)