path: root/todolists
diff options
authorDan McGee <>2011-11-03 23:30:16 -0500
committerDan McGee <>2011-11-03 23:30:16 -0500
commit0db2830b8fda4d898a184a31f3375c10f3cc4083 (patch)
treefed2700088e1f03ffcd9af906184d81f199955fc /todolists
parent19c2841f20653fd3c59f73fdb16f7f7b1ea15434 (diff)
Make maintainer lookup on todo lists fast
This is rather sick to look at. Sorry, Django gives me no other choice. Signed-off-by: Dan McGee <>
Diffstat (limited to 'todolists')
1 files changed, 7 insertions, 1 deletions
diff --git a/todolists/ b/todolists/
index 8ad7be56..585cefd0 100644
--- a/todolists/
+++ b/todolists/
@@ -12,6 +12,7 @@ from django.template import Context, loader
from django.utils import simplejson
from main.models import Todolist, TodolistPkg, Package
+from packages.utils import attach_maintainers
from .utils import get_annotated_todolists
class TodoListForm(forms.ModelForm):
@@ -49,6 +50,9 @@ def flag(request, listid, pkgid):
def view(request, listid):
todolist = get_object_or_404(Todolist, id=listid)
+ # we don't hold onto the result, but the objects are the same here,
+ # so accessing maintainers in the template is now cheap
+ attach_maintainers(tp.pkg for tp in todolist.packages)
return direct_to_template(request, 'todolists/view.html', {'list': todolist})
@@ -163,8 +167,10 @@ def send_todolist_emails(todo_list, new_packages):
def public_list(request):
todo_lists = Todolist.objects.incomplete()
+ # total hackjob, but it makes this a lot less query-intensive.
+ all_pkgs = [tp for tl in todo_lists for tp in tl.packages]
+ attach_maintainers([tp.pkg for tp in all_pkgs])
return direct_to_template(request, "todolists/public_list.html",
{"todo_lists": todo_lists})
# vim: set ts=4 sw=4 et: