def get(self): election = self.election() if not election: return user = users.get_current_user() candidates = db.GqlQuery( "SELECT * FROM Candidate WHERE ANCESTOR IS :1", election) vote = Vote.get_by_key_name(self._vote_key(election, user)) if vote: entries = dict((c.key().id(), c) for c in candidates) keys = [[int(key) for key in rank.split(",")] for rank in vote.ranks.split(";")] ranks = interleave(repeat([]), ([entries[key] for key in rank] for rank in keys)) unranked = [ entries[key] for key in entries if key not in set(sum(keys, [])) ] else: ranks = [[]] unranked = candidates self.render("vote.html", election=election, ranks=ranks, unranked=unranked)
def get(self): election = self.election() if not election: return user = users.get_current_user() candidates = db.GqlQuery("SELECT * FROM Candidate WHERE ANCESTOR IS :1", election) vote = Vote.get_by_key_name(self._vote_key(election, user)) if vote: entries = dict((c.key().id(), c) for c in candidates) keys = [[int(key) for key in rank.split(",")] for rank in vote.ranks.split(";")] ranks = interleave(repeat([]), ([entries[key] for key in rank] for rank in keys)) unranked = [entries[key] for key in entries if key not in set(sum(keys, []))] else: ranks = [[]] unranked = candidates self.render("vote.html", election=election, ranks=ranks, unranked=unranked)
def vote(self, ranks): for item_id in ranks: self.page.form.set("c" + item_id, ranks[item_id]) self.page.form.submit() return Vote.get_by_key_name(self.contest.key().name() + "/" + str(self.user.user_id()))