Skip to content

Commit cfb77ae

Browse files
committed
Merge pull request encode#3273 from olliewalsh/breadcrumbs_view_name
Do not ignore overridden View.get_view_name() in breadcrumbs
2 parents 0e83063 + 332c30a commit cfb77ae

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

rest_framework/utils/breadcrumbs.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,8 @@ def get_breadcrumbs(url, request=None):
99
tuple of (name, url).
1010
"""
1111
from rest_framework.reverse import preserve_builtin_query_params
12-
from rest_framework.settings import api_settings
1312
from rest_framework.views import APIView
1413

15-
view_name_func = api_settings.VIEW_NAME_FUNCTION
16-
1714
def breadcrumbs_recursive(url, breadcrumbs_list, prefix, seen):
1815
"""
1916
Add tuples of (name, url) to the breadcrumbs list,
@@ -31,8 +28,7 @@ def breadcrumbs_recursive(url, breadcrumbs_list, prefix, seen):
3128
# Don't list the same view twice in a row.
3229
# Probably an optional trailing slash.
3330
if not seen or seen[-1] != view:
34-
suffix = getattr(view, 'suffix', None)
35-
name = view_name_func(cls, suffix)
31+
name = cls().get_view_name()
3632
insert_url = preserve_builtin_query_params(prefix + url, request)
3733
breadcrumbs_list.insert(0, (name, insert_url))
3834
seen.append(view)

tests/test_utils.py

+17
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,15 @@ class NestedResourceInstance(APIView):
3232
pass
3333

3434

35+
class CustomNameResourceInstance(APIView):
36+
def get_view_name(self):
37+
return "Foo"
38+
39+
3540
urlpatterns = [
3641
url(r'^$', Root.as_view()),
3742
url(r'^resource/$', ResourceRoot.as_view()),
43+
url(r'^resource/customname$', CustomNameResourceInstance.as_view()),
3844
url(r'^resource/(?P<key>[0-9]+)$', ResourceInstance.as_view()),
3945
url(r'^resource/(?P<key>[0-9]+)/$', NestedResourceRoot.as_view()),
4046
url(r'^resource/(?P<key>[0-9]+)/(?P<other>[A-Za-z]+)$', NestedResourceInstance.as_view()),
@@ -75,6 +81,17 @@ def test_resource_instance_breadcrumbs(self):
7581
]
7682
)
7783

84+
def test_resource_instance_customname_breadcrumbs(self):
85+
url = '/resource/customname'
86+
self.assertEqual(
87+
get_breadcrumbs(url),
88+
[
89+
('Root', '/'),
90+
('Resource Root', '/resource/'),
91+
('Foo', '/resource/customname')
92+
]
93+
)
94+
7895
def test_nested_resource_breadcrumbs(self):
7996
url = '/resource/123/'
8097
self.assertEqual(

0 commit comments

Comments
 (0)