summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py
blob: 04770ac6a8e85dfdefa8294c594f7b0c8ae87a98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from django import template
from django.core.urlresolvers import reverse

register = template.Library()

def project_url(parser, token):
    """
    Create a URL for a project's main page;
    for non-default projects, this is the configuration page;
    for the default project, this is the project builds page
    """
    try:
        tag_name, project = token.split_contents()
    except ValueError:
        raise template.TemplateSyntaxError(
            "%s tag requires exactly one argument" % tag_name
        )
    return ProjectUrlNode(project)

class ProjectUrlNode(template.Node):
    def __init__(self, project):
        self.project = template.Variable(project)

    def render(self, context):
        try:
            project = self.project.resolve(context)
            if project.is_default:
                return reverse('projectbuilds', args=(project.id,))
            else:
                return reverse('project', args=(project.id,))
        except template.VariableDoesNotExist:
            return ''

register.tag('project_url', project_url)