def update_votes(item, request_handler, user_id): """ save the vote for an item :param item: {Item} :param request_handler: {BaseHandler} for the request :param user_id: {int} """ try: old_votes = Vote.query(Vote.voter == user_id, Vote.item == item.key) for v in old_votes: v.key.delete() vote = Vote() vote.item = item.key vote.voter = user_id vote.comment = unicode(request_handler.request.get('myComment')) vote.meal_kind = int(request_handler.request.get('kind')) vote.place_style= int(request_handler.request.get('style')) vote.cuisine = Category.get_by_id(request_handler.request.get('cuisine')).key vote_stars = int(request_handler.request.get("voteScore")) vote.stars = vote_stars if vote_stars == 0: vote_untried= bool(request_handler.request.get("voteUntried")) else: vote_untried = False vote.untried = vote_untried vote.put() ndb_models.mark_vote_as_updated(str(vote.key.id()), user_id) logging.info ('update_votes for %s "%s"=%d'% (item.place_name,vote.comment,vote.stars)) except Exception, ex: logging_ext.error("newOrUpdateItem votes exception", exc_info=True) raise
def load_votes(self, user, vote_score, vote_comment): vote = Vote() vote.item = self.item vote.vote = vote_score vote.comment = vote_comment vote.voter = user.key.id() vote.put()
def zkp_check(): #check if voter has valid voter id voter = Voter.query.filter_by(voter_id=request.json["voter_id"]).first() tvote = TVote.query.filter_by(voter=request.json["voter_id"]).first() if tvote == None: return "error" c = [int(getattr(tvote, "vote%d" % i)) for i in range(NUM_CANDIDATES)] #stored in db u = [int(getattr(tvote, "u%d" % i)) for i in range(NUM_CANDIDATES)] #stored in db e = [getattr(tvote, "e%d" % i) for i in range(NUM_CANDIDATES)] v = [int(x) for x in request.json["v"]] #array of v w = [int(x) for x in request.json["w"]] #array of w #do check check_pass = True for i in range(NUM_CANDIDATES): a = (pow(pub.g, v[i], pub.n_sq) * pow(c[i], e[i], pub.n_sq) * pow(w[i], pub.n, pub.n_sq)) % pub.n_sq b = u[i] if a == b: continue else: check_pass = False #break if check_pass: if not tvote.failed: tvote.correct = tvote.correct + 1 if tvote.correct == ZKP_ITERATIONS: vote = Vote.query.filter_by( voter=request.json["voter_id"]).first() if vote == None: vo = Vote() vo.voter = tvote.voter for i in range( NUM_CANDIDATES): #assign vote values to vote entry setattr(vo, "vote%d" % i, str(c[i])) db_session.add(vo) db_session.commit() else: tvote.failed = True db_session.commit() return "error" return "ok"
def add_vote(request, uuid, polluuid, choice): if request.method == 'GET': try: vote = Vote.objects.get(voter=uuid, poll=polluuid) return HttpResponse(json.dumps('fail: vote exists'), mimetype='application/json') except Vote.DoesNotExist: vote = Vote() _poll = Poll.objects.get(uuid=polluuid) vote.voter = User.objects.get(uuid=uuid) vote.poll = _poll vote.vote = choice vote.save() _poll.votes = _poll.votes + 1 _poll.save() return HttpResponse(json.dumps('ok'), mimetype='application/json') else: raise Http404
def at_least_one_vote_per_item(self): # make sure each item has 1 vote items = Item.query() for it in items: vote = it.votes.filter("voter =", it.owner).get() if not vote: vote = Vote() vote.item = it vote.vote = VoteValue.VOTE_LIKED vote.voter = it.owner vote.comment = "blah" it.upVotes = 1 vote.put() it.save() if it.votesUp == it.votesDown == 0: if vote.vote == VoteValue.VOTE_LIKED: it.votesUp = 1 elif vote.vote == VoteValue.VOTE_DISLIKED: it.votesDown = -1 it.save()
def post(self): it_id = int(self.request.get('item_id')) it = Item.get_by_id(it_id) voteScore = int(self.request.get("vote")) voteUntried = bool(self.request.get("untried")) my_votes = Vote.query(Vote.voter == self.user_id, Vote.item == it.key) if my_votes.count() == 0: # a new vote new_vote = Vote() new_vote.item = it new_vote.voter = self.user_id else: # roll back the old vote new_vote = my_votes.get() oldVote, oldUntried = new_vote.stars, new_vote.untried new_vote.stars = voteScore new_vote.untried = voteUntried new_vote.comment = self.request.get("comment") new_vote.when = datetime.datetime.now() new_vote.put() it.save() # refresh cache self.response.out.write('OK')