summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py')
-rw-r--r--bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py b/bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py
new file mode 100644
index 0000000000..04770ac6a8
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py
@@ -0,0 +1,34 @@
1from django import template
2from django.core.urlresolvers import reverse
3
4register = template.Library()
5
6def project_url(parser, token):
7 """
8 Create a URL for a project's main page;
9 for non-default projects, this is the configuration page;
10 for the default project, this is the project builds page
11 """
12 try:
13 tag_name, project = token.split_contents()
14 except ValueError:
15 raise template.TemplateSyntaxError(
16 "%s tag requires exactly one argument" % tag_name
17 )
18 return ProjectUrlNode(project)
19
20class ProjectUrlNode(template.Node):
21 def __init__(self, project):
22 self.project = template.Variable(project)
23
24 def render(self, context):
25 try:
26 project = self.project.resolve(context)
27 if project.is_default:
28 return reverse('projectbuilds', args=(project.id,))
29 else:
30 return reverse('project', args=(project.id,))
31 except template.VariableDoesNotExist:
32 return ''
33
34register.tag('project_url', project_url)