mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-08 06:14:47 +03:00
Merge 0c13037966
into 0777cb7577
This commit is contained in:
commit
a8da2f2b6b
|
@ -112,13 +112,13 @@ class NamespaceVersioning(BaseVersioning):
|
||||||
Host: example.com
|
Host: example.com
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
"""
|
"""
|
||||||
invalid_version_message = _('Invalid version in URL path.')
|
invalid_version_message = _('Invalid version in namespace.')
|
||||||
|
|
||||||
def determine_version(self, request, *args, **kwargs):
|
def determine_version(self, request, *args, **kwargs):
|
||||||
resolver_match = getattr(request, 'resolver_match', None)
|
resolver_match = getattr(request, 'resolver_match', None)
|
||||||
if (resolver_match is None or not resolver_match.namespace):
|
if (resolver_match is None or not resolver_match.namespace):
|
||||||
return self.default_version
|
return self.default_version
|
||||||
version = resolver_match.namespace
|
version = resolver_match.namespace.split(':')[0]
|
||||||
if not self.is_allowed_version(version):
|
if not self.is_allowed_version(version):
|
||||||
raise exceptions.NotFound(self.invalid_version_message)
|
raise exceptions.NotFound(self.invalid_version_message)
|
||||||
return version
|
return version
|
||||||
|
|
|
@ -271,8 +271,12 @@ class TestHyperlinkedRelatedField(UsingURLPatterns, APITestCase):
|
||||||
|
|
||||||
|
|
||||||
class TestNamespaceVersioningHyperlinkedRelatedFieldScheme(UsingURLPatterns, APITestCase):
|
class TestNamespaceVersioningHyperlinkedRelatedFieldScheme(UsingURLPatterns, APITestCase):
|
||||||
|
nested = [
|
||||||
|
url(r'^namespaced/(?P<pk>\d+)/$', dummy_pk_view, name='nested'),
|
||||||
|
]
|
||||||
included = [
|
included = [
|
||||||
url(r'^namespaced/(?P<pk>\d+)/$', dummy_pk_view, name='namespaced'),
|
url(r'^namespaced/(?P<pk>\d+)/$', dummy_pk_view, name='namespaced'),
|
||||||
|
url(r'^nested/', include(nested, namespace='nested-namespace'))
|
||||||
]
|
]
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
@ -296,6 +300,10 @@ class TestNamespaceVersioningHyperlinkedRelatedFieldScheme(UsingURLPatterns, API
|
||||||
field = self._create_field('namespaced', 'v1')
|
field = self._create_field('namespaced', 'v1')
|
||||||
assert field.to_representation(PKOnlyObject(3)) == 'http://testserver/v1/namespaced/3/'
|
assert field.to_representation(PKOnlyObject(3)) == 'http://testserver/v1/namespaced/3/'
|
||||||
|
|
||||||
|
def test_api_url_is_properly_reversed_with_nested(self):
|
||||||
|
field = self._create_field('nested', 'v1:nested-namespace')
|
||||||
|
assert field.to_representation(PKOnlyObject(3)) == 'http://testserver/v1/nested/namespaced/3/'
|
||||||
|
|
||||||
def test_api_url_is_properly_reversed_with_v2(self):
|
def test_api_url_is_properly_reversed_with_v2(self):
|
||||||
field = self._create_field('namespaced', 'v2')
|
field = self._create_field('namespaced', 'v2')
|
||||||
assert field.to_representation(PKOnlyObject(5)) == 'http://testserver/v2/namespaced/5/'
|
assert field.to_representation(PKOnlyObject(5)) == 'http://testserver/v2/namespaced/5/'
|
||||||
|
|
Loading…
Reference in New Issue
Block a user