Esempio n. 1
0
    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})
Esempio n. 2
0
    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})