mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-23 18:13:57 +03:00
Breadcrumbs play nicely when app not installed at root URL. Fixes #211
This commit is contained in:
parent
f741bab709
commit
689d2afd97
|
@ -1,11 +1,12 @@
|
|||
from django.core.urlresolvers import resolve
|
||||
from django.core.urlresolvers import resolve, get_script_prefix
|
||||
|
||||
|
||||
def get_breadcrumbs(url):
|
||||
"""Given a url returns a list of breadcrumbs, which are each a tuple of (name, url)."""
|
||||
|
||||
from djangorestframework.views import View
|
||||
|
||||
def breadcrumbs_recursive(url, breadcrumbs_list):
|
||||
def breadcrumbs_recursive(url, breadcrumbs_list, prefix):
|
||||
"""Add tuples of (name, url) to the breadcrumbs list, progressively chomping off parts of the url."""
|
||||
|
||||
try:
|
||||
|
@ -15,7 +16,7 @@ def get_breadcrumbs(url):
|
|||
else:
|
||||
# Check if this is a REST framework view, and if so add it to the breadcrumbs
|
||||
if isinstance(getattr(view, 'cls_instance', None), View):
|
||||
breadcrumbs_list.insert(0, (view.cls_instance.get_name(), url))
|
||||
breadcrumbs_list.insert(0, (view.cls_instance.get_name(), prefix + url))
|
||||
|
||||
if url == '':
|
||||
# All done
|
||||
|
@ -23,10 +24,11 @@ def get_breadcrumbs(url):
|
|||
|
||||
elif url.endswith('/'):
|
||||
# Drop trailing slash off the end and continue to try to resolve more breadcrumbs
|
||||
return breadcrumbs_recursive(url.rstrip('/'), breadcrumbs_list)
|
||||
return breadcrumbs_recursive(url.rstrip('/'), breadcrumbs_list, prefix)
|
||||
|
||||
# Drop trailing non-slash off the end and continue to try to resolve more breadcrumbs
|
||||
return breadcrumbs_recursive(url[:url.rfind('/') + 1], breadcrumbs_list)
|
||||
|
||||
return breadcrumbs_recursive(url, [])
|
||||
return breadcrumbs_recursive(url[:url.rfind('/') + 1], breadcrumbs_list, prefix)
|
||||
|
||||
prefix = get_script_prefix().rstrip('/')
|
||||
url = url[len(prefix):]
|
||||
return breadcrumbs_recursive(url, [], prefix)
|
||||
|
|
19
rest_framework.egg-info/PKG-INFO
Normal file
19
rest_framework.egg-info/PKG-INFO
Normal file
|
@ -0,0 +1,19 @@
|
|||
Metadata-Version: 1.0
|
||||
Name: rest-framework
|
||||
Version: 2.0.0
|
||||
Summary: A lightweight REST framework for Django.
|
||||
Home-page: http://django-rest-framework.org
|
||||
Author: Tom Christie
|
||||
Author-email: tom@tomchristie.com
|
||||
License: BSD
|
||||
Download-URL: http://pypi.python.org/pypi/rest_framework/
|
||||
Description: UNKNOWN
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 4 - Beta
|
||||
Classifier: Environment :: Web Environment
|
||||
Classifier: Framework :: Django
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Topic :: Internet :: WWW/HTTP
|
81
rest_framework.egg-info/SOURCES.txt
Normal file
81
rest_framework.egg-info/SOURCES.txt
Normal file
|
@ -0,0 +1,81 @@
|
|||
MANIFEST.in
|
||||
setup.py
|
||||
rest_framework/__init__.py
|
||||
rest_framework/authentication.py
|
||||
rest_framework/compat.py
|
||||
rest_framework/decorators.py
|
||||
rest_framework/exceptions.py
|
||||
rest_framework/fields.py
|
||||
rest_framework/generics.py
|
||||
rest_framework/mixins.py
|
||||
rest_framework/models.py
|
||||
rest_framework/negotiation.py
|
||||
rest_framework/parsers.py
|
||||
rest_framework/permissions.py
|
||||
rest_framework/renderers.py
|
||||
rest_framework/request.py
|
||||
rest_framework/resources.py
|
||||
rest_framework/response.py
|
||||
rest_framework/reverse.py
|
||||
rest_framework/serializers.py
|
||||
rest_framework/settings.py
|
||||
rest_framework/status.py
|
||||
rest_framework/throttling.py
|
||||
rest_framework/urlpatterns.py
|
||||
rest_framework/urls.py
|
||||
rest_framework/views.py
|
||||
rest_framework.egg-info/PKG-INFO
|
||||
rest_framework.egg-info/SOURCES.txt
|
||||
rest_framework.egg-info/dependency_links.txt
|
||||
rest_framework.egg-info/top_level.txt
|
||||
rest_framework/authtoken/__init__.py
|
||||
rest_framework/authtoken/models.py
|
||||
rest_framework/authtoken/views.py
|
||||
rest_framework/authtoken/migrations/0001_initial.py
|
||||
rest_framework/authtoken/migrations/__init__.py
|
||||
rest_framework/runtests/__init__.py
|
||||
rest_framework/runtests/runcoverage.py
|
||||
rest_framework/runtests/runtests.py
|
||||
rest_framework/runtests/settings.py
|
||||
rest_framework/runtests/urls.py
|
||||
rest_framework/static/rest_framework/css/bootstrap-tweaks.css
|
||||
rest_framework/static/rest_framework/css/bootstrap.min.css
|
||||
rest_framework/static/rest_framework/css/default.css
|
||||
rest_framework/static/rest_framework/css/prettify.css
|
||||
rest_framework/static/rest_framework/img/glyphicons-halflings-white.png
|
||||
rest_framework/static/rest_framework/img/glyphicons-halflings.png
|
||||
rest_framework/static/rest_framework/js/bootstrap.min.js
|
||||
rest_framework/static/rest_framework/js/default.js
|
||||
rest_framework/static/rest_framework/js/jquery-1.8.1-min.js
|
||||
rest_framework/static/rest_framework/js/prettify-min.js
|
||||
rest_framework/templates/rest_framework/api.html
|
||||
rest_framework/templates/rest_framework/base.html
|
||||
rest_framework/templates/rest_framework/login.html
|
||||
rest_framework/templatetags/__init__.py
|
||||
rest_framework/templatetags/rest_framework.py
|
||||
rest_framework/tests/__init__.py
|
||||
rest_framework/tests/authentication.py
|
||||
rest_framework/tests/breadcrumbs.py
|
||||
rest_framework/tests/decorators.py
|
||||
rest_framework/tests/description.py
|
||||
rest_framework/tests/files.py
|
||||
rest_framework/tests/methods.py
|
||||
rest_framework/tests/mixins.py
|
||||
rest_framework/tests/models.py
|
||||
rest_framework/tests/modelviews.py
|
||||
rest_framework/tests/oauthentication.py
|
||||
rest_framework/tests/parsers.py
|
||||
rest_framework/tests/renderers.py
|
||||
rest_framework/tests/request.py
|
||||
rest_framework/tests/response.py
|
||||
rest_framework/tests/reverse.py
|
||||
rest_framework/tests/serializer.py
|
||||
rest_framework/tests/status.py
|
||||
rest_framework/tests/testcases.py
|
||||
rest_framework/tests/throttling.py
|
||||
rest_framework/tests/validators.py
|
||||
rest_framework/tests/views.py
|
||||
rest_framework/utils/__init__.py
|
||||
rest_framework/utils/breadcrumbs.py
|
||||
rest_framework/utils/encoders.py
|
||||
rest_framework/utils/mediatypes.py
|
1
rest_framework.egg-info/dependency_links.txt
Normal file
1
rest_framework.egg-info/dependency_links.txt
Normal file
|
@ -0,0 +1 @@
|
|||
|
7
rest_framework.egg-info/top_level.txt
Normal file
7
rest_framework.egg-info/top_level.txt
Normal file
|
@ -0,0 +1,7 @@
|
|||
rest_framework/authtoken
|
||||
rest_framework/utils
|
||||
rest_framework/tests
|
||||
rest_framework/runtests
|
||||
rest_framework/templatetags
|
||||
rest_framework
|
||||
rest_framework/authtoken/migrations
|
Loading…
Reference in New Issue
Block a user