diff options
author | Will Woods <wwoods@redhat.com> | 2009-09-25 11:17:59 -0400 |
---|---|---|
committer | Will Woods <wwoods@redhat.com> | 2009-09-25 11:17:59 -0400 |
commit | 8e99e2e4a009247dcdfbea25774163cb5c6571fe (patch) | |
tree | ee8b8c6409f5f558e70617d75f9c64e7d5e71a6c | |
parent | 23f97cda9cc29f66e5a36162dad4a624ed33a638 (diff) | |
download | israwhidebroken-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.py | 14 |
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, |