diff options
| author | José Padilla | 2015-01-27 21:21:42 -0400 | 
|---|---|---|
| committer | José Padilla | 2015-01-27 21:21:42 -0400 | 
| commit | 8f33e39f62c59d06783dd3e6e7cf8d464ff08c5f (patch) | |
| tree | d65e6e29c0aa75e2af1b4d377fba509bfbfb066f | |
| parent | 107198af943aadba686ceeac0976b09366983007 (diff) | |
| parent | ac87490b91e3405d497da360afed10842a73dfd0 (diff) | |
| download | django-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.py | 2 | ||||
| -rw-r--r-- | tests/test_metadata.py | 17 | 
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) | 
