Skip to content

Commit cfb77ae

Browse files
committed
Merge pull request #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

Lines changed: 1 addition & 5 deletions
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

Lines changed: 17 additions & 0 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy