aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rest_framework/routers.py2
-rw-r--r--rest_framework/utils/breadcrumbs.py30
2 files changed, 22 insertions, 10 deletions
diff --git a/rest_framework/routers.py b/rest_framework/routers.py
index 3a8c4508..33e88a81 100644
--- a/rest_framework/routers.py
+++ b/rest_framework/routers.py
@@ -29,7 +29,7 @@ Route = namedtuple('Route', ['url', 'mapping', 'name', 'initkwargs'])
def replace_methodname(format_string, methodname):
"""
Partially format a format_string, swapping out any
- '{methodname}'' or '{methodnamehyphen}'' components.
+ '{methodname}' or '{methodnamehyphen}' components.
"""
methodnamehyphen = methodname.replace('_', '-')
ret = format_string
diff --git a/rest_framework/utils/breadcrumbs.py b/rest_framework/utils/breadcrumbs.py
index 8f8e5710..28801d09 100644
--- a/rest_framework/utils/breadcrumbs.py
+++ b/rest_framework/utils/breadcrumbs.py
@@ -4,25 +4,33 @@ from rest_framework.utils.formatting import get_view_name
def get_breadcrumbs(url):
- """Given a url returns a list of breadcrumbs, which are each a tuple of (name, url)."""
+ """
+ Given a url returns a list of breadcrumbs, which are each a
+ tuple of (name, url).
+ """
from rest_framework.views import APIView
def breadcrumbs_recursive(url, breadcrumbs_list, prefix, seen):
- """Add tuples of (name, url) to the breadcrumbs list, progressively chomping off parts of the url."""
+ """
+ Add tuples of (name, url) to the breadcrumbs list,
+ progressively chomping off parts of the url.
+ """
try:
(view, unused_args, unused_kwargs) = resolve(url)
except Exception:
pass
else:
- # Check if this is a REST framework view, and if so add it to the breadcrumbs
+ # Check if this is a REST framework view,
+ # and if so add it to the breadcrumbs
if issubclass(getattr(view, 'cls', None), APIView):
# Don't list the same view twice in a row.
# Probably an optional trailing slash.
if not seen or seen[-1] != view:
suffix = getattr(view, 'suffix', None)
- breadcrumbs_list.insert(0, (get_view_name(view.cls, suffix), prefix + url))
+ name = get_view_name(view.cls, suffix)
+ breadcrumbs_list.insert(0, (name, prefix + url))
seen.append(view)
if url == '':
@@ -30,11 +38,15 @@ def get_breadcrumbs(url):
return breadcrumbs_list
elif url.endswith('/'):
- # Drop trailing slash off the end and continue to try to resolve more breadcrumbs
- return breadcrumbs_recursive(url.rstrip('/'), breadcrumbs_list, prefix, seen)
-
- # Drop trailing non-slash off the end and continue to try to resolve more breadcrumbs
- return breadcrumbs_recursive(url[:url.rfind('/') + 1], breadcrumbs_list, prefix, seen)
+ # Drop trailing slash off the end and continue to try to
+ # resolve more breadcrumbs
+ url = url.rstrip('/')
+ return breadcrumbs_recursive(url, breadcrumbs_list, prefix, seen)
+
+ # Drop trailing non-slash off the end and continue to try to
+ # resolve more breadcrumbs
+ url = url[:url.rfind('/') + 1]
+ return breadcrumbs_recursive(url, breadcrumbs_list, prefix, seen)
prefix = get_script_prefix().rstrip('/')
url = url[len(prefix):]