示例#1
0
 def test_vote_constraints(self):
     first_vote = Vote()
     first_vote.idea_id = 1
     first_vote.user_id = 1
     first_vote.value = 1
     second_vote = Vote()
     second_vote.idea_id = 1
     second_vote.user_id = 1
     second_vote.value = -1
     self.addModel(first_vote)
     with self.assertRaises(IntegrityError):
         self.addModel(second_vote)
示例#2
0
def room(room_name):
	if not server_data.get_room(room_name).is_user_in_room(current_user.id):
		server_data.get_room(room_name).add_user(current_user.id)

	all_songs = get_all_songs_before_and_including(12)

	form = [] #[len(all_songs)]	# dunno if I need all this but eh
	voted_for = [None] * len(all_songs)

	for i, song in enumerate(all_songs):
		form.append(VoteForm(prefix=song.country))

		if form[i].validate_on_submit():
			vote = Vote(form[i].vote.data, song.id, current_user.id)
			print("Adding vote for", song.name, " (id) ", song.id, " for user ", current_user.username, " with value ", form[i].vote.data)

			db.session.add(vote)	#pylint: disable=E1101
			db.session.commit()		#pylint: disable=E1101

		if has_voted_for_song(song.id, current_user.id):
			voted_for[i] = True
		else:
			voted_for[i] = False

	return render_template('room.html', room_name=room_name, title=room_name, form=form, songs=all_songs, voted_for=voted_for)
def create_vote(set_id):
    # upvote from body
    isUpvote = request.json['isUpvote']

    # gets decodes userinfo out of token using auth0 api
    token = request.headers.get('Authorization')
    req = requests.get('https://codelet-app.auth0.com/userinfo',
                       headers={'Authorization': token}).content
    userInfo = json.loads(req)
    userId = User.query.filter_by(email=userInfo['email']).first().id
    dbVote = Vote.query.filter_by(user_id=userId, set_id=set_id).first()
    if dbVote:
        if isUpvote == dbVote.is_upvote:
            db.session.delete(dbVote)
            db.session.commit()
            return "Deleted", 204
        else:
            dbVote.is_upvote = not dbVote.is_upvote
            db.session.commit()
            return "Switched Vote", 206
    else:
        new_vote = Vote(user_id=userId, set_id=set_id, is_upvote=isUpvote)
        db.session.add(new_vote)
        db.session.commit()
        return "Created vote", 201
示例#4
0
def vote_store_channel(sid):

    store = Store.read(sid)
    if store:
        request_data = request.form
        cid = request_data.get('cid', None)

        if not cid:
            return Response(status=400)
        else:
            cid = int(cid)

        idx = -1
        for i, vote in enumerate(store.votes):
            if vote.cid == cid:
                idx = i
                break
        if idx >= 0:
            store.votes[idx].vote_count += 1
        else:
            channel = Channel.read(cid)
            vote = Vote(sid=sid, cid=cid, vote_count=1)
            if channel:
                store.votes.append(vote)
        success = store.update()
        if success:
            result = store_schema.dump(store)
            return jsonify(result.data), 200
        else:
            return Response(status=500)
    return Response(status=404)
示例#5
0
def vote(request):
    VoteFormSet = formset_factory(VoteForm, extra=0)
    if request.method == 'POST':
        formset = VoteFormSet(request.POST, request.FILES)
        if formset.is_valid():
            g = request.session.get('group')
            b = request.session.get('badge_number')
            n = request.session.get('student_name')

            if (g == None or b == None or n == None):
                return HttpResponseRedirect('/')

            print('valid')

            resp = ResponseStudent()
            resp.badge_number = b
            resp.student_name = n
            resp.group = Group.objects.filter(pk=g)[0]
            resp.save()
            for form in formset.cleaned_data:
                v = Vote()
                v.response_student = resp
                v.teacher = form['teacher']
                v.mark1 = form['mark1']
                v.mark2 = form['mark2']
                v.mark3 = form['mark3']
                v.mark4 = form['mark4']
                v.mark5 = form['mark5']
                v.mark6 = form['mark6']
                v.mark7 = form['mark7']
                v.mark8 = form['mark8']
                v.save()
        else:
            print('No valid')
    return render(request, 'app/thank_you.html')
示例#6
0
def vote_next(request):
    ip = request.META.get('REMOTE_ADDR')

    try:
        vote = Vote.objects.get(ip=ip)
    except Vote.DoesNotExist:
        try:
            reverse = socket.gethostbyaddr(ip)[0]
        except socket.herror:
            reverse = u'unknown <%s>' % ip

        vote = Vote(ip=ip, reverse=reverse)

    vote.point = 1
    vote.save()

    # test
    votes = Vote.objects.all()
    points = sum(vote.point for vote in votes)

    if settings.MODE == 'static' and points >= settings.STATIC_THRESHOLD:
        spotify_next()
    elif settings.MODE == 'dynamic':
        clients = Client.objects.filter(up=True).count()
        if points >= clients // 2:
            spotify_next()
        else:
            messages.add_message(request, messages.SUCCESS,
                                 'You have successfully voted.')
    else:
        messages.add_message(request, messages.SUCCESS,
                             'You have successfully voted.')

    return redirect('app.views.index')
示例#7
0
def add_vote():
    req = request.get_json(force=True)
    user_id = req.get('user_id', None)
    game_id = req.get('game_id', None)
    team_id = req.get('team_id', None)
    if current_user().id != user_id:
        abort(403)
    game = Game.query.get(game_id)
    if not game:
        return bad_request('Game not found')
    team = Team.query.get(team_id)
    if not team:
        return bad_request('Team not found')
    if game.home_team != team and game.away_team != team:
        return bad_request('Team not playing in game')
    vote = Vote.query.filter_by(user_id=user_id, game_id=game_id).first()
    if not vote:
        vote = Vote(user_id=user_id, game_id=game_id, team_id=team_id)
        db.session.add(vote)
        db.session.commit()
    elif vote.team != team:
        vote.team = team
        db.session.commit()
    vote_schema = VoteSchema()
    output = vote_schema.dump(vote).data
    return jsonify({'vote': output})
示例#8
0
def vote(p_thing=None):
    if request.method == "GET":
        votes = {}
        thing = Thing.query.filter(Thing.name.ilike(p_thing)).first()
        if not thing:
            return f"no thing '{p_thing}'", 404

        for vote in Vote.query.filter(Vote.thing_id == thing.id).all():
            votes[vote.id] = {
                "thing_id": vote.thing_id,
                "user_id": vote.user_id,
                "vote_love": vote.vote_love,
                "vote_hobby": vote.vote_hobby,
                "timestamp": vote.timestamp,
            }
        return votes

    if request.method == "POST":
        user_id = session.get("user_id")
        if user_id:
            user = User.query.get(user_id)
            if not user:
                return "no user", 400
        else:
            return "no user", 400

        thing = Thing.query.filter(Thing.name.ilike(p_thing)).first()
        if not thing:
            return f"no thing '{p_thing}'", 400

        vote_love = int(request.form.get("vote_love"))
        vote_hobby = int(request.form.get("vote_hobby"))
        thing_id = thing.id
        timestamp = datetime.utcnow()

        if vote_love not in [0, 1]:
            return f"vote_love cannot be {vote_love}", 400

        if vote_hobby not in [0, 1]:
            return f"vote_hobby cannot be {vote_hobby}", 400

        if vote_love == 0 and vote_hobby == 1:
            return f"no hobby if you do not love it, ok?!", 400

        v = Vote.query.filter(
            Vote.thing_id == thing_id, Vote.user_id == user_id
        ).first()
        if not v:
            v = Vote()
        v.user_id = user_id
        v.thing_id = thing_id
        v.vote_love = vote_love
        v.vote_hobby = vote_hobby
        v.timestamp = timestamp

        db.session.add(v)
        db.session.commit()

        return "succesful"
示例#9
0
def iusethis(request, host_id):
    h = get_object_or_404(Hosting, id=host_id)
    h.num_of_users = h.num_of_users + 1
    h.save()
    Vote(hosting_id=host_id, ip=get_client_ip(request)).save()
    messages.add_message(request, messages.INFO,
                         'Thank you.Your vote is counted !')
    return HttpResponseRedirect('/')
示例#10
0
 def addVotes(self, ideas):
     votes = []
     for i in range(20):
         vote = Vote()
         vote.value = random.choice([-1, 1])
         vote.idea_id = ideas[randint(0, 14)].id
         self.addModel(vote)
         votes.append(vote)
     return votes
示例#11
0
def vote():
    form = request.form
    user_id = form['user_id']
    phone_id = form['phone_id']
    new_vote = Vote(user_id=user_id, phone_id=phone_id)
    db.session.add(new_vote)
    db.session.commit()
    flash('Congratulations on voting success', 'yes')
    return jsonify({'code': '200'})
示例#12
0
def vote(winner_id, loser_id, vote_key):
    if vote_key == session.get('vote_key'):
        v = Vote(winner_id=winner_id, loser_id=loser_id)
        db.session.add(v)
        winner = User.query.filter_by(id=winner_id).first()
        loser = User.query.filter_by(id=loser_id).first()
        winner.rating, loser.rating = update_ratings(winner.rating,
                                                     loser.rating)

        db.session.commit()
    return redirect('/')
示例#13
0
def pitch_vote(id):
    pitch = Pitch.query.get(id)
    vote = Vote.query.filter_by(user_id=current_user.id, pitch_id=pitch.id).first()
    print(vote)
    if not vote:
        vote = Vote(type=vote, pitch_id=id)
    form = VoteForm()
    if form.validate_on_submit():
        vote.type = form.type.data
    vote.save_vote()
    return redirect(url_for('.single_pitch', id=pitch.id))
    def setUp(self):
        '''
        Set up method that will run before every Test
        '''
        # self.group_pick_up = Group( name="Excuse lines" )

        # self.user_jim = User(username = "******", password = "******", email = "*****@*****.**" )

        # self.new_line = Line( line_content="I am Groot", group = self.group_pick_up, user=self.user_jim)

        self.new_vote = Vote(vote_number=0)
示例#15
0
 def test_get_all_votes(self):
     self.addTestModels()
     user = User()
     user.username = '******'
     user.email = '*****@*****.**'
     self.addModel(user)
     vote = Vote()
     vote.value = 1
     vote.user_id = user.id
     vote.email = self.testIdea.id
     self.addModel(vote)
     self.assertCountEqual([vote, self.testVote], get_all_votes())
示例#16
0
def upvote(post_id):
    post_to_upvote = Post.query.filter_by(id=post_id).first_or_404()
    vote_query = Vote.query.filter_by(user_id=current_user.id,
                                      post_id=post_to_upvote.id).first()
    if vote_query is not None:
        flash("You already voted in this post.")
    else:
        post_to_upvote.update_votes()
        vote = Vote(user_id=current_user.id, post_id=post_to_upvote.id)
        db.session.add(vote)
        db.session.commit()

    return redirect(redirect_url())
示例#17
0
def init_votes():
    queried_users = db.session.query(User).filter(User.name.in_(users)).all()
    queried_ideas = db.session.query(Idea).all()
    print('creating votes and events for users.')
    for user in queried_users:
        for idea in queried_ideas:
            if random.choice([True, False]):
                vote = Vote()
                vote.value = random.choice([-1, 1])
                vote.idea_id = idea.id
                vote.user_id = user.id
                db.session.add(vote)
                db.session.commit()
                init_event(vote)
示例#18
0
    def upvote(post_id, current_user):
        post_to_upvote = Post.query.filter_by(
            company_id=current_user.company_id, deleted=0,
            id=post_id).first_or_404()
        vote_query = Vote.query.filter_by(user_id=current_user.id,
                                          post_id=post_to_upvote.id).first()
        if vote_query is not None:
            return False
        else:
            post_to_upvote.update_votes()
            vote = Vote(user_id=current_user.id, post_id=post_to_upvote.id)
            db.session.add(vote)
            db.session.commit()

        return True
示例#19
0
def make_vote(flag, mid):
    """ makes a vote record in the database, flag indicates wheather up or down"""
    record = Vote.query.filter_by(user_id=current_user.id, post_id=mid).first()
    if record:
        return jsonify({
            "id": mid,
            "flag": flag,
            "msg": "already exists!",
            "ratio": getVotingRatio(mid)
        })
    vote = Vote(user_id=current_user.id, post_id=mid, is_pro=(int(flag) & 1))
    db.session.add(vote)
    db.session.commit()

    return jsonify({"ratio": getVotingRatio(mid)})
示例#20
0
文件: views.py 项目: boceckts/ideahub
def vote():
    if not current_user.is_authenticated:
        return redirect(url_for('login'))
    queried_idea = get_idea(request.form.get('target'))
    if queried_idea is None:
        abort(409)
    if vote_exists(current_user.id, queried_idea.id):
        edit_vote(
            get_vote(current_user.id, queried_idea.id).id,
            request.form.get('value'))
    else:
        future_vote = Vote(owner=current_user,
                           target=queried_idea,
                           value=request.form.get('value'))
        save_vote(future_vote)
    return redirect_back()
示例#21
0
def upvote(post_id, subdomain='www'):
    post_to_upvote = Post.query.filter_by(company_id=current_user.company_id,
                                          id=post_id).first_or_404()
    vote_query = Vote.query.filter_by(user_id=current_user.id,
                                      post_id=post_to_upvote.id).first()
    if vote_query is not None:
        post_to_upvote.update_unvotes()
        db.session.delete(vote_query)
        db.session.commit()
        flash("You cancel your vote.", "success")
    else:
        post_to_upvote.update_votes()
        vote = Vote(user_id=current_user.id, post_id=post_to_upvote.id)
        db.session.add(vote)
        db.session.commit()
        flash("You upvoted the post.", "success")
    return redirect(redirect_url())
示例#22
0
def upvote():
    data = request.get_json()
    db = get_db()

    try:
        # create a new vote with incoming id and session id
        newVote = Vote(post_id=data['post_id'], user_id=session.get('user_id'))

        db.add(newVote)
        db.commit()
    except:
        print(sys.exc_info()[0])

        db.rollback()
        return jsonify(message='Upvote failed'), 500

    return '', 204
示例#23
0
def vote_keep(request):
    ip = request.META.get('REMOTE_ADDR')

    try:
        vote = Vote.objects.get(ip=ip)
    except Vote.DoesNotExist:
        try:
            reverse = socket.gethostbyaddr(ip)[0]
        except socket.herror:
            reverse = u'unknown <%s>' % ip

        vote = Vote(ip=ip, reverse=reverse)

    vote.point = -1
    vote.save()

    messages.add_message(request, messages.SUCCESS,
                         'You have successfully voted.')
    return redirect('app.views.index')
示例#24
0
 def test_check_vote_event(self):
     self.addModel(self.testUser)
     self.testIdea.user_id = self.testUser.id
     self.addModel(self.testIdea)
     for i in range(10):
         user = User()
         user.username = str(i)
         user.email = '{}@mail.com'.format(i)
         self.addModel(user)
         vote = Vote()
         vote.idea_id = self.testIdea.id
         vote.user_id = user.id
         vote.value = 1
         self.addModel(vote)
         check_vote_event(vote)
         if i == 5:
             self.assertEqual(EventType.upvotes, Event.query.first().type)
         elif i == 10:
             self.assertEqual(EventType.votes, Event.query.first().type)
示例#25
0
def set_vote(vote: typing.Dict, skip_validation: bool = False) -> Vote:
    v = Vote(email=vote["email"],
             validation=str(uuid.uuid4()),
             valid=skip_validation)
    try:
        db.session.add(v)
        db.session.flush()

        for index, song in enumerate(vote["songs"]):
            s = VoteSong(vote_id=v.id, song_id=song["id"], position=index + 1)
            db.session.add(s)

        db.session.commit()
    except IntegrityError:
        db.session.rollback()
        raise Exception("this email address has already used to vote")
    except Exception as error:
        db.session.rollback()
        raise

    return v
示例#26
0
def upvote():
    # Capture request data and current session to communicate with db.
    data = request.get_json()
    db = get_db()

    try:
        # Create new vote object using passed in post id and stored user id.
        newVote = Vote(post_id=data['post_id'], user_id=session.get('user_id'))

        db.add(newVote)
        db.commit()
    except:
        print(sys.exc_info()[0])

        # If the insertion failed, rollback the last db commit to prevent server crashing when deployed.
        db.rollback()
        # Send error message back along with server error code.
        return '', 500

    # If successful, return.
    return '', 204
示例#27
0
def vote_recipe(recipe_id):
    if current_user.is_authenticated:
        recipe = Recipe.query.get_or_404(recipe_id)  # gives 404 if not found
        poll = Poll.query.get_or_404(recipe.poll_id)

        if Vote.query.filter_by(
                poll_id=poll.id,
                user_id=current_user.id).first():  # already has a vote

            flash('You have already voted in that poll!', 'warning')
            return redirect(url_for('polls'))

        vote = Vote(poll_id=poll.id,
                    user_id=current_user.id,
                    recipe_id=recipe_id)

        db.session.add(vote)
        db.session.commit()
        flash('Voted succesfully!', 'success')
        return redirect(url_for('polls'))
    else:
        abort(403)
    def setUp(self):
        basedir = os.path.abspath(os.path.dirname(__file__))
        app.config['SQLALCHEMY_DATABASE_URI'] =\
            'sqlite:///' + os.path.join(basedir, 'test.db')
        app.config['TESTING'] = True
        app.config['WTF_CSRF_ENABLED'] = False
        self.app = app.test_client()
        db.create_all()

        u1 = User(username='******', email='*****@*****.**')
        u1.set_password('password')

        admin1 = User(username='******', email='*****@*****.**', is_admin=True)
        admin1.set_password('admin')

        db.session.add(u1)
        db.session.commit()

        poll1 = Poll(name='poll1', description='pdesc', creator_id=u1.id)
        poll2 = Poll(name='poll2', description='p2desc', creator_id=u1.id)

        db.session.add(poll1)
        db.session.add(poll2)
        db.session.commit()

        recipe1 = Recipe(name='recipe1',
                         description='rdesc',
                         contributor_id=u1.id,
                         poll_id=poll1.id)

        db.session.add(recipe1)
        db.session.commit()

        vote1 = Vote(poll_id=poll1.id, user_id=u1.id, recipe_id=recipe1.id)

        db.session.add(admin1)
        db.session.add(vote1)
        db.session.commit()
示例#29
0
def RegisterVote(cid, token):
    t = Token.query.filter_by(token=token).first()
    if t is not None:
        c = Choice.query.filter_by(id=cid).first()
        e = Election.query.filter_by(id=t.election).first()

        # Check if all the values return results
        if c is not None and e is not None:
            # Check if the token & choice match the election
            if c.election == e.id and t.election == e.id:
                # register the vote in Vote
                confirmcode = GenerateConfirmCode()
                v = Vote(choice=c.id, election=e.id, confirmcode=confirmcode)
                # Add the vote
                db.session.add(v)
                # Delete the token
                db.session.delete(t)
                # Commit
                db.session.commit()
                return confirmcode
            else:
                return False
    else:
        return False
示例#30
0
  Post(title='Morbi non quam nec dui luctus rutrum', post_url='https://nasa.gov/donec.json', user_id=1),
  Post(title='Donec diam neque, vestibulum eget, vulputate ut, ultrices vel, augue', post_url='https://europa.eu/parturient/montes/nascetur/ridiculus/mus/etiam/vel.aspx', user_id=2),
  Post(title='Nunc purus', post_url='http://desdev.cn/enim/blandit/mi.jpg', user_id=3),
  Post(title='Pellentesque eget nunc', post_url='http://google.ca/nam/nulla/integer.aspx', user_id=4)
])

db.commit()

# Insert comments.
db.add_all([
  Comment(comment_text='Nunc rhoncus dui vel sem.', user_id=1, post_id=2),
  Comment(comment_text='Morbi odio odio, elementum eu, interdum eu, tincidunt in, leo. Maecenas pulvinar lobortis est.', user_id=1, post_id=3),
  Comment(comment_text='Aliquam erat volutpat. In congue.', user_id=2, post_id=1),
  Comment(comment_text='Quisque arcu libero, rutrum ac, lobortis vel, dapibus at, diam.', user_id=2, post_id=3),
  Comment(comment_text='In hac habitasse platea dictumst.', user_id=3, post_id=3)
])

db.commit()

# Insert votes.
db.add_all([
  Vote(user_id=1, post_id=2),
  Vote(user_id=1, post_id=4),
  Vote(user_id=2, post_id=4),
  Vote(user_id=3, post_id=4),
  Vote(user_id=4, post_id=2)
])

db.commit()

db.close()