diff options
| author | Tom Christie | 2015-01-27 09:09:59 +0000 | 
|---|---|---|
| committer | Tom Christie | 2015-01-27 09:09:59 +0000 | 
| commit | 107198af943aadba686ceeac0976b09366983007 (patch) | |
| tree | c7635b0ec5fcc54b54469b8a068a510bc4015d82 | |
| parent | 8f25c0c53c24c88afc86d99bbb3ca4edc3a4e0a2 (diff) | |
| parent | bf58c1265ddf06deb435d049fae01ed324a310e0 (diff) | |
| download | django-rest-framework-107198af943aadba686ceeac0976b09366983007.tar.bz2 | |
Merge pull request #2456 from brandoncazander/version-3.1
Fix AttributeError on BrowsableAPI when checking for API version
| -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) | 
