summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWill Woods <wwoods@redhat.com>2009-09-25 11:17:59 -0400
committerWill Woods <wwoods@redhat.com>2009-09-25 11:17:59 -0400
commit8e99e2e4a009247dcdfbea25774163cb5c6571fe (patch)
treeee8b8c6409f5f558e70617d75f9c64e7d5e71a6c
parent23f97cda9cc29f66e5a36162dad4a624ed33a638 (diff)
downloadisrawhidebroken-8e99e2e4a009247dcdfbea25774163cb5c6571fe.tar.gz
israwhidebroken-8e99e2e4a009247dcdfbea25774163cb5c6571fe.tar.xz
israwhidebroken-8e99e2e4a009247dcdfbea25774163cb5c6571fe.zip
Figure out next/prev compose ID with less database load
-rw-r--r--israwhidebroken/controllers.py14
1 files changed, 5 insertions, 9 deletions
diff --git a/israwhidebroken/controllers.py b/israwhidebroken/controllers.py
index 9727b47..24dad52 100644
--- a/israwhidebroken/controllers.py
+++ b/israwhidebroken/controllers.py
@@ -16,17 +16,13 @@ class Root(controllers.RootController):
# Main index page
@expose(template="israwhidebroken.templates.index")
def index(self, c=None):
- c = to_int(c)
- # FIXME This is really, really stupid - use a LIMIT or something
- composelist = sorted(set([t.compose_id for t in Tree.select()]))
if not c:
- c = composelist[-1]
- prev = composelist[-2]
+ c = Tree.select().max('compose_id')
next = None
- elif c in composelist:
- idx = composelist.index(c)
- prev = (idx > 0) and composelist[idx-1] or None
- next = (idx+1 < len(composelist)) and composelist[idx+1] or None
+ else:
+ c = to_int(c)
+ next = Tree.select(Tree.q.compose_id > c).min('compose_id')
+ prev = Tree.select(Tree.q.compose_id < c).max('compose_id')
# FIXME BLUH WIDGETIFY THIS
return dict(c=c, prev=prev, next=next,
in_qa='qa' in identity.current.groups,