示例#1
0
文件: views.py 项目: wgilpin/shout
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
示例#2
0
 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()
示例#3
0
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"
示例#4
0
文件: views.py 项目: shaond/whichone
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
示例#5
0
文件: migrate.py 项目: wgilpin/shout
 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()
示例#6
0
文件: views.py 项目: wgilpin/shout
 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')