summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2012-12-28 14:44:09 -0600
committerDan McGee <dan@archlinux.org>2012-12-28 14:48:29 -0600
commitee507a5b81d7a21eaa67da4c848522a5a97d2e3c (patch)
treea48e7b8c27ab27aaa055d40e90efdbfa093a6ad5
parent20b64e42672d185821cc584dfa4b133ee259a144 (diff)
downloadarchweb-ee507a5b81d7a21eaa67da4c848522a5a97d2e3c.tar.gz
archweb-ee507a5b81d7a21eaa67da4c848522a5a97d2e3c.zip
Add a todolist package details link template tag
Given the way we retrieve certain related objects, it makes more sense to use a custom tag here rather than our generic package details link tag. When viewing a large todolist, this saves significantly on the number of queries we need to build the page. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--templates/devel/index.html3
-rw-r--r--templates/todolists/public_list.html4
-rw-r--r--templates/todolists/view.html4
-rw-r--r--todolists/templatetags/__init__.py0
-rw-r--r--todolists/templatetags/todolists.py19
5 files changed, 25 insertions, 5 deletions
diff --git a/templates/devel/index.html b/templates/devel/index.html
index 57151041..6d304409 100644
--- a/templates/devel/index.html
+++ b/templates/devel/index.html
@@ -2,6 +2,7 @@
{% load static from staticfiles %}
{% load cache %}
{% load package_extras %}
+{% load todolists %}
{% block title %}Arch Linux - Developer Dashboard{% endblock %}
@@ -61,7 +62,7 @@
<tr class="{% cycle 'odd' 'even' %}">
<td><a href="{{ todopkg.todolist.get_absolute_url }}"
title="View todo list: {{ todopkg.todolist.name }}">{{ todopkg.todolist.name }}</a></td>
- <td>{% pkg_details_link todopkg.pkg %}</td>
+ <td>{% todopkg_details_link todopkg %}</td>
<td>{{ todopkg.repo.name }}</td>
<td>{{ todopkg.arch.name }}</td>
<td>{{ todopkg.pkg.maintainers|join:', ' }}</td>
diff --git a/templates/todolists/public_list.html b/templates/todolists/public_list.html
index 41caf5b0..da99bc01 100644
--- a/templates/todolists/public_list.html
+++ b/templates/todolists/public_list.html
@@ -1,6 +1,6 @@
{% extends "base.html" %}
{% load static from staticfiles %}
-{% load package_extras %}
+{% load todolists %}
{% block title %}Arch Linux - Todo Lists{% endblock %}
@@ -45,7 +45,7 @@
<tbody>
{% for pkg in list.packages %}
<tr class="{% cycle 'odd' 'even' %}">
- <td>{% pkg_details_link pkg.pkg pkg.pkgname %}</td>
+ <td>{% todopkg_details_link pkg %}</td>
<td>{{ pkg.arch.name }}</td>
<td>{{ pkg.repo.name|capfirst }}</td>
<td>{{ pkg.maintainers|join:', ' }}</td>
diff --git a/templates/todolists/view.html b/templates/todolists/view.html
index 66bbec6f..89a05126 100644
--- a/templates/todolists/view.html
+++ b/templates/todolists/view.html
@@ -1,6 +1,6 @@
{% extends "base.html" %}
{% load static from staticfiles %}
-{% load package_extras %}
+{% load todolists %}
{% block title %}Arch Linux - Todo: {{ list.name }}{% endblock %}
@@ -71,7 +71,7 @@
<tr class="{% cycle 'odd' 'even' %}{% if user in pkg.maintainers %} mine{% endif %} {{ pkg.arch.name }} {{ pkg.repo.name|lower }}">
<td>{{ pkg.arch.name }}</td>
<td>{{ pkg.repo.name|capfirst }}</td>
- <td>{% pkg_details_link pkg.pkg pkg.pkgname %}</td>
+ <td>{% todopkg_details_link pkg %}</td>
{% if pkg.pkg.flag_date %}
<td><span class="flagged">{{ pkg.pkg.full_version }}</span></td>
{% else %}
diff --git a/todolists/templatetags/__init__.py b/todolists/templatetags/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/todolists/templatetags/__init__.py
diff --git a/todolists/templatetags/todolists.py b/todolists/templatetags/todolists.py
new file mode 100644
index 00000000..5f31dc1f
--- /dev/null
+++ b/todolists/templatetags/todolists.py
@@ -0,0 +1,19 @@
+from django import template
+
+register = template.Library()
+
+
+def pkg_absolute_url(repo, arch, pkgname):
+ return '/packages/%s/%s/%s/' % (repo.name.lower(), arch.name, pkgname)
+
+
+@register.simple_tag
+def todopkg_details_link(todopkg):
+ pkg = todopkg.pkg
+ if not pkg:
+ return todopkg.pkgname
+ link = '<a href="%s" title="View package details for %s">%s</a>'
+ url = pkg_absolute_url(todopkg.repo, todopkg.arch, pkg.pkgname)
+ return link % (url, pkg.pkgname, pkg.pkgname)
+
+# vim: set ts=4 sw=4 et: