def get(self): ord = self.request.get('o', 'a') if ord not in ('a','f'): ord = 'a' next = None # Paging by http://google-appengine.googlegroups.com/web/efficient_paging_using_key_instead_of_a_dedicated_unique_property.txt bookmark = self.request.get('from') if bookmark: try: ord, first, key = self.load_bookmark(bookmark) except (ValueError, TypeError): return self.redirect("/") replays = Replay.all(keys_only=True).filter(self.SORT[ord][1], first).filter('__key__ >=', key).order('__key__').fetch(ON_PAGE+1) if len(replays) < ON_PAGE + 1: replays.extend(Replay.all(keys_only=True).filter(self.SORT[ord][2], first).order(self.SORT[ord][0]).order('__key__').fetch(ON_PAGE+1-len(replays))) else: replays = Replay.all(keys_only=True).order(self.SORT[ord][0]).order('__key__').fetch(ON_PAGE+1) replays = Replay.get(replays) if len(replays) == ON_PAGE+1: next = self.dump_bookmark(ord, replays[ON_PAGE]) replays = replays[:-1] self.respond('main', {'title':'browse replays', 'replays': replays, 'next': next})
def get(self): next = None # Paging by http://google-appengine.googlegroups.com/web/efficient_paging_using_key_instead_of_a_dedicated_unique_property.txt bookmark = self.request.get('from') if bookmark: try: type, search, value, key = self.load_bookmark(bookmark) except (ValueError, TypeError): return self.redirect("/") replays = Replay.all(keys_only=True).filter('%s =' % type, value).filter('__key__ >=', key).order('__key__').fetch(ON_PAGE+1) if len(replays) < ON_PAGE + 1: replays.extend(Replay.all(keys_only=True).filter('%s >' % type, value).filter('%s <' % type, search + u'\ufffd').order(type).order('__key__').fetch(ON_PAGE+1-len(replays))) else: if self.request.get('player'): type = 'players' search = self.request.get('player') elif self.request.get('file'): type = 'filename' search = self.request.get('file') else: return self.redirect('/') replays = Replay.all(keys_only=True).filter('%s >=' % type, search).filter('%s <' % type, search + u'\ufffd').order(type).order('__key__').fetch(ON_PAGE+1) replays = Replay.get(replays) if len(replays) == ON_PAGE+1: next = self.dump_bookmark(type, search, replays[ON_PAGE]) replays = replays[:-1] self.respond('main', {'title': "%s search results for '%s'" % (type, search), 'replays': replays, 'next': next})