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) |
