Beispiel #1
0
 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'])