def assertTitle(self, url, expected_title, with_middleware=False): """Asserts that given URL can be resolved to a Crumb object which, in turn, will contain given title. """ request = self.make_request(url, with_middleware=with_middleware) crumb = resolvers.find_crumb(request) title = unicode(crumb) self.assertEquals(title, expected_title)
def named_crumb(context, name, *args, **kwargs): """ Resolves given named URL and returns the relevant breadcrumb label (if available). Usage:: <a href="{% url project-detail project.slug %}"> {% named_crumb project-detail project.slug %} </a> """ url = reverse(name, args=args, kwargs=kwargs) return find_crumb(context['request'], url)
def breadcrumb(context, url=None): """ Returns breadcrumb label for given URL. Usage:: <a href="/projects/">{% breadcrumb "/projects/" %}</a> Or without the argument to display current page's title:: <h1>{% breadcrumb %}</h1> """ return find_crumb(context['request'], url)
def _get_sections(request): """ Returns list of sections (horizontal cut, base level). """ sections = [] for section_url in SECTIONS: crumb = find_crumb(request, section_url) if crumb: if section_url == '/': if request.path == section_url: crumb.is_current = True else: if request.path.startswith(section_url): crumb.is_current = True sections.append(crumb) return sections
def crumb_link(context, name, *args, **kwargs): """ Acts like :func:`named_crumb` but also wraps the result into a link tag. Usage:: <ul> <li>{% crumb_link 'auth_login' %}</li> <li>{% crumb_link 'project-index' %}</li> </ul> The result:: <ul> <li><a href="/accounts/login/">Log in</a></li> <li><a href="/projects/">Projects</a></li> </ul> Please note that you have to use quotes, otherwise the arguments are considered variable names. """ url = reverse(name, args=args, kwargs=kwargs) label = find_crumb(context['request'], url) return u'<a href="%s">%s</a>' % (url, label)
def _get_trail(request, exclude_section=False): """ Returns trail of breadcrumbs (vertical cut, excluding base level) """ trail = [] url = request.path while url: if url == '/': break if exclude_section and url in SECTIONS: break crumb = find_crumb(request, url) if not crumb: break trail.append(crumb) # go one level up url = urljoin(url, '..') trail.reverse() return trail
def get_title(context): import warnings warnings.warn('Template filter "get_title" is deprecated. Use "breadcrumb"' ' tag instead. See django-navigation documentation for' ' details.', DeprecationWarning) return find_crumb(context['request'])