Commit d89aade3 by Ethan Fremen

Allow the default router to have a custom name.

Signed-off-by: Ethan Fremen <ethan@matterport.com>
parent ae2887ff
...@@ -215,6 +215,7 @@ class DefaultRouter(SimpleRouter): ...@@ -215,6 +215,7 @@ class DefaultRouter(SimpleRouter):
""" """
include_root_view = True include_root_view = True
include_format_suffixes = True include_format_suffixes = True
root_view_name = 'api-root'
def get_api_root_view(self): def get_api_root_view(self):
""" """
...@@ -244,7 +245,7 @@ class DefaultRouter(SimpleRouter): ...@@ -244,7 +245,7 @@ class DefaultRouter(SimpleRouter):
urls = [] urls = []
if self.include_root_view: if self.include_root_view:
root_url = url(r'^$', self.get_api_root_view(), name='api-root') root_url = url(r'^$', self.get_api_root_view(), name=self.root_view_name)
urls.append(root_url) urls.append(root_url)
default_urls = super(DefaultRouter, self).get_urls() default_urls = super(DefaultRouter, self).get_urls()
......
...@@ -6,7 +6,7 @@ from rest_framework import serializers, viewsets ...@@ -6,7 +6,7 @@ from rest_framework import serializers, viewsets
from rest_framework.compat import include, patterns, url from rest_framework.compat import include, patterns, url
from rest_framework.decorators import link, action from rest_framework.decorators import link, action
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.routers import SimpleRouter from rest_framework.routers import SimpleRouter, DefaultRouter
factory = RequestFactory() factory = RequestFactory()
...@@ -148,3 +148,17 @@ class TestTrailingSlash(TestCase): ...@@ -148,3 +148,17 @@ class TestTrailingSlash(TestCase):
expected = ['^notes$', '^notes/(?P<pk>[^/]+)$'] expected = ['^notes$', '^notes/(?P<pk>[^/]+)$']
for idx in range(len(expected)): for idx in range(len(expected)):
self.assertEqual(expected[idx], self.urls[idx].regex.pattern) self.assertEqual(expected[idx], self.urls[idx].regex.pattern)
class TestNameableRoot(TestCase):
def setUp(self):
class NoteViewSet(viewsets.ModelViewSet):
model = RouterTestModel
self.router = DefaultRouter()
self.router.root_view_name = 'nameable-root'
self.router.register(r'notes', NoteViewSet)
self.urls = self.router.urls
def test_router_has_custom_name(self):
expected = 'nameable-root'
self.assertEqual(expected, self.urls[0].name)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment