diff options
| -rw-r--r-- | rest_framework/request.py | 2 | ||||
| -rw-r--r-- | tests/browsable_api/auth_urls.py | 1 | ||||
| -rw-r--r-- | tests/test_metadata.py | 15 | 
3 files changed, 18 insertions, 0 deletions
| diff --git a/rest_framework/request.py b/rest_framework/request.py index cfbbdecc..ce2fcb47 100644 --- a/rest_framework/request.py +++ b/rest_framework/request.py @@ -107,6 +107,8 @@ def clone_request(request, method):          ret.accepted_renderer = request.accepted_renderer      if hasattr(request, 'accepted_media_type'):          ret.accepted_media_type = request.accepted_media_type +    if hasattr(request, 'version'): +        ret.version = request.version      return ret diff --git a/tests/browsable_api/auth_urls.py b/tests/browsable_api/auth_urls.py index bce7dcf9..97bc1036 100644 --- a/tests/browsable_api/auth_urls.py +++ b/tests/browsable_api/auth_urls.py @@ -3,6 +3,7 @@ from django.conf.urls import patterns, url, include  from .views import MockView +  urlpatterns = patterns(      '',      (r'^$', MockView.as_view()), diff --git a/tests/test_metadata.py b/tests/test_metadata.py index 972a896a..bdc84edf 100644 --- a/tests/test_metadata.py +++ b/tests/test_metadata.py @@ -1,6 +1,7 @@  from __future__ import unicode_literals  from rest_framework import exceptions, serializers, status, views  from rest_framework.request import Request +from rest_framework.renderers import BrowsableAPIRenderer  from rest_framework.test import APIRequestFactory  request = Request(APIRequestFactory().options('/')) @@ -168,3 +169,17 @@ class TestMetadata:          response = view(request=request)          assert response.status_code == status.HTTP_200_OK          assert list(response.data['actions'].keys()) == ['POST'] + +    def test_bug_2455_clone_request(self): +        class ExampleView(views.APIView): +            renderer_classes = (BrowsableAPIRenderer,) + +            def post(self, request): +                pass + +            def get_serializer(self): +                assert hasattr(self.request, 'version') +                return serializers.Serializer() + +        view = ExampleView.as_view() +        view(request=request) | 
