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>
This commit is contained in:
Dan McGee 2012-12-28 14:44:09 -06:00
parent 20b64e4267
commit ee507a5b81
5 changed files with 25 additions and 5 deletions

View File

@ -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 @@ <h3>My Incomplete Todo List Packages</h3>
<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>

View File

@ -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 @@ <h4>{{ list.name }}</h4>
<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>

View File

@ -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 @@ <h3>Filter Todo List Packages</h3>
<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 %}

View File

View File

@ -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: