예제 #1
0
def smile():
    form = VoteForm()
    if "randomNote" not in session: #this is temporary; once site gets up and going, will find better way to counter botting
        session["randomNote"] = toJSON(Note.getRandomNote())
    if form.validate_on_submit():
        tempNote = Note.getNote(session["randomNote"]["lookupId"])
        if form.like.data:
            tempNote.update({"numLikes": tempNote.numLikes + 1})
        elif form.dislike.data:
            tempNote.update({"numDislikes": tempNote.numDislikes + 1})
        session.clear()
        return redirect('/smile')
    return render_template("smile.html", notez = Note.getNote(session["randomNote"]["lookupId"]), form=form)
예제 #2
0
def poll_detail(poll_key):
    poll = Poll.load(poll_key)

    if request.method == 'POST':
        choice = poll.choice_by_name(request.form.get('choice'))
        if choice:
            choice.register_vote()
            return redirect(url_for('poll_detail', poll_key=poll.key))

    choices = [(
        choice,
        VoteForm(choice=choice.name),
    ) for choice in poll.choices]
    return render_template('poll_detail.html', poll=poll, choices=choices)
예제 #3
0
def poll(poll):
    poll1 = poll.replace('-', ' ')
    poll1 = poll1.replace('~', '?')
    vote_form = VoteForm()
    voted = False
    var = models.isVoted.query.filter_by(user_id=g.user.id)
    vote_list = [x for x in var]
    if vote_list:
        for vote in vote_list:
            if vote.poll_id == models.Poll.query.filter_by(
                    body=poll1).first().id:
                voted = True
    #vote form ki choice field me choices add (to make a dynamic list for selection)
    vote_form.choice.choices = [
        (str(x.choice_id), str(x.value))
        for x in models.Poll.query.filter_by(body=poll1).first().choices.all()
    ]

    #adding pie chart
    c = [x for x in models.Poll.query.filter_by(body=poll1).first().choices]
    choice_vote = [['choice', 'votes']]
    for choice in c:
        choice_vote.append([str(choice), int(choice.votes)])

    if vote_form.validate_on_submit():
        # add a vote to the choice
        models.Choice.query.get(vote_form.choice.data).vote()
        voted = models.isVoted(
            user_id=g.user.id,
            poll_id=int(models.Poll.query.filter_by(body=poll1).first().id),
            option_id=vote_form.choice.data)

        #update the isVoted table
        db.session.add(voted)

        if vote_form.comment.data is not None and vote_form.comment.data != '':
            comment = models.Comment(choice_id=vote_form.choice.data,
                                     user_id=g.user.id,
                                     body=vote_form.comment.data,
                                     anonymous=vote_form.anonymous.data)
            db.session.add(comment)
        db.session.commit()
        flash('Voted Successfully')
        return redirect(url_for('poll', poll=poll))
    return render_template(
        'vote.html',
        poll=models.Poll.query.filter_by(body=poll1).first(),
        form=vote_form,
        voted=voted,
        choice_vote=choice_vote)
예제 #4
0
def vote(request, id_num):
    vf = VoteForm(request.POST or None)
    post = get_object_or_404(Post, pk=id_num)
    if request.method == "POST" and vf.is_valid():
        if request.user.is_authenticated():
            user = request.user
        else:
            user = User.objects.get(username="******")
        vote = Vote(post=post, user=user, ip=request.META["REMOTE_ADDR"])
        vote.save()
        return HttpResponseRedirect(request.META["HTTP_REFERER"])

    return render_to_response("vote.html", {"form": vf},
                              context_instance=RequestContext(request))
예제 #5
0
def vove():
    form = VoteForm(request.form) 
    if request.method == 'POST' and form.validate():
        if voted(form.suggestionid.data,str(session['uuid'])):
            vote = models.Vote(form.suggestionid.data,str(session['uuid']),form.votestatus.data)
            vote.status = form.votestatus.data
            models.db.session.add(vote)
            models.db.session.commit()
            flash('Thanks, suggestion down-voted')
            return redirect(url_for('getonesuggestion',suggestid=form.suggestionid.data))   
        vote = models.Vote(form.suggestionid.data,str(session['uuid']),form.votestatus.data)
        models.db.session.add(vote)
        models.db.session.commit()
        flash('Thanks, suggestion up-voted')
        return redirect(url_for('getonesuggestion',suggestid=form.suggestionid.data))   
	return redirect(url_for('getonesuggestion',suggestid=form.suggestionid.data)) 
예제 #6
0
def vote():
    print(config_cosmos.COSMOSDB_HOST)
    form = VoteForm()
    replaced_document = {}
    if form.validate_on_submit():  # is user submitted vote
        client = document_client.DocumentClient(
            config_cosmos.COSMOSDB_HOST,
            {'masterKey': config_cosmos.COSMOSDB_KEY})

        # Read databases and take first since id should not be duplicated.
        db = next((data for data in client.ReadDatabases()
                   if data['id'] == config_cosmos.COSMOSDB_DATABASE))

        # Read collections and take first since id should not be duplicated.
        coll = next((coll for coll in client.ReadCollections(db['_self'])
                     if coll['id'] == config_cosmos.COSMOSDB_COLLECTION))

        # Read documents and take first since id should not be duplicated.
        doc = next((doc for doc in client.ReadDocuments(coll['_self'])
                    if doc['id'] == config_cosmos.COSMOSDB_DOCUMENT))

        # Take the data from the deploy_preference and increment our database
        doc[form.deploy_preference.data] = doc[form.deploy_preference.data] + 1
        replaced_document = client.ReplaceDocument(doc['_self'], doc)

        # Create a model to pass to results.html
        class VoteObject:
            choices = dict()
            total_votes = 0

        vote_object = VoteObject()
        vote_object.choices = {
            "Web Site": doc['Web Site'],
            "Cloud Service": doc['Cloud Service'],
            "Virtual Machine": doc['Virtual Machine']
        }
        vote_object.total_votes = sum(vote_object.choices.values())

        return render_template('results.html',
                               year=datetime.now().year,
                               vote_object=vote_object)

    else:
        return render_template('vote.html',
                               title='Vote',
                               year=datetime.now().year,
                               form=form)
예제 #7
0
파일: app.py 프로젝트: ScotchLabs/kudos
def awards():
    p = phase()
    if p == 0:
        return render_template("nominees.html", awards=list_awards())
    if p == 2:
        return render_template("voting.html", form=VoteForm(),
            awards=list_awards())
    # else: nominations
    form = NominationForm()
    if form.validate_on_submit():
        award = Award.query.filter_by(id=form.award_id.data).first_or_404()
        award.nominations.append(Nomination(name=form.entry.data,
                                            creator=current_user))
        db.session.commit()
        flash("Nomination successful!", "success")
        return redirect(url_for("awards"))
    return render_template("nominations.html", form=form, awards=list_awards())
예제 #8
0
 def POST(self):
     #XXX
     raise web.notfound("The game has ended. Please refresh your browser.")
     form = VoteForm()
     if not form.validates():
         raise web.notfound(form.note)
     if not web.ctx.game.your_turn:
         raise web.notfound("It's not your turn!")
     Vote.insert_or_update(
         ('game_id', 'user_id', 'seq'),
         game_id=web.ctx.game.id,
         user_id=web.ctx.user.id,
         seq=web.ctx.game.current_seq,
         move=form.d.pos,
         notes=form.d.notes,
         ip_address=web.ctx.ip,
     )
예제 #9
0
파일: views.py 프로젝트: NSkelsey/cvf
def vote(request, id_num):
    vf = VoteForm(request.POST or None)
    post = get_object_or_404(Post, pk=id_num)
    if vf.is_valid() and request.user.is_authenticated():
        user = request.user
        prev_vote = Vote.objects.filter(
            user=user,
            parent_post=post.parent,
        )
        if prev_vote.exists():
            prev_vote.delete()
            messages.warning(
                request,
                'Changing your vote because you already voted on some child of the parent post'
            )
        vote = Vote(post=post, parent_post=post.parent, user=user)
        vote.save()
        return HttpResponseRedirect(request.META["HTTP_REFERER"])
예제 #10
0
def handle_vote(party_id, resturaunt_id):
    form = VoteForm()
    if form.validate_on_submit():
        yay_or_nay = form.yay_or_nay.data
        vote = Vote.vote(member=g.user,
                         party_id=party_id,
                         resturaunt_id=resturaunt_id,
                         yay=yay_or_nay)
        if vote:
            if vote.party.done_voting():
                return redirect(f'/done_voting/{party_id}')
            return redirect(f'/vote/{party_id}')
        else:
            flash("""You're done voting for now, refresh this page
                         to see when the resturaunt is chosen""",
                  category='success')
            return redirect(f'/parties/{party_id}')
    return redirect(f'/vote/{party_id}')
예제 #11
0
def castVote():

    form = VoteForm()
    print form.errors
    voteExists = False

    #if form.validate_on_submit():

    #print form.cancel.data
    if form.submit.data:
        op_select = form.picker.data
        bal_id = session.get('ballot')

        try:
            conn = mysql.connect()
            cursor = conn.cursor()
            cursor.callproc('checkForVote', (bal_id, current_user.vid))
            data = cursor.fetchall()

            if len(data) is 0:
                cursor.callproc('RecordVote',
                                (bal_id, current_user.vid, op_select))
                data = cursor.fetchall()

            else:
                voteExists = True

        finally:

            conn.commit()
            conn.close()

            if not voteExists:
                flash("Your vote was successfully recorded..")

            else:
                flash("You have already voted for this ballot!")

            return redirect(url_for('displayVoteForm', key=bal_id))

    elif form.cancel.data:
        return redirect(url_for('showAGMs'))
예제 #12
0
파일: views.py 프로젝트: dragonslice/nxdom
def index(request):
    """
    Handle post requests or list recent feedback messages.
    """
    # Check if this is a post request with new feedback.
    feedback_form = FeedbackForm(request.POST or None)
    if feedback_form.is_valid():
        return submit(request,
                      page=feedback_form.cleaned_data['page'],
                      message=feedback_form.cleaned_data['message'])
    # Check if this is a post request to vote on a message.
    vote_form = VoteForm(request.POST or None)
    if vote_form.is_valid():
        return vote(request, vote_form.cleaned_data['vote'])
    # Check if this is a post request to delete a message.
    delete_form = DeleteForm(request.POST or None)
    if delete_form.is_valid():
        return delete(request, delete_form.cleaned_data['delete'])
    # Otherwise, display recent feedback.
    return render_to_response(request, 'feedback/index.html', locals())
예제 #13
0
def submit_vote():
    result = {"success": 0, "message": "An error occurred"}
    if phase() != 2:
        result["message"] = "Not voting phase!"
        return json.dumps(result), 200  # return 200 so message displays

    if not current_user.is_authenticated:
        # rather than login_required, this allows returning a json
        result["message"] = "Not logged in"
        return json.dumps(result), 200

    form = VoteForm()
    if form.validate() or True:
        try:
            nom_id = int(form.nomid.data)
        except:
            return json.dumps(result), 200
        nom = Nomination.query.filter_by(id=nom_id).first()
        if nom is None:
            return json.dumps(result), 200
        for sel in current_user.selections:
            if sel in nom.award.nominations:
                # take away vote from other nom in this category
                # clicking same button will simply remove the vote
                current_user.selections.remove(sel)
                result["no_vote"] = str(sel.id)
                if sel == nom:
                    # we removed the vote, so we are done
                    result["success"] = 1
                    result["message"] = "Vote removed"
                    db.session.commit()
                    return json.dumps(result), 200
                break
        # only add vote if it was a different nomination's button
        nom.voters.append(current_user)
        result["success"] = 2
        result["message"] = "Vote submitted"
        result["vote"] = str(nom.id)
        db.session.commit()

    return json.dumps(result), 200
예제 #14
0
def vote(recipe_id):
    form = VoteForm(request.form)
    if request.method == 'POST' and form.validate():

        vote = Vote.query.filter_by(recipe_id=recipe_id,
                                    user_id=current_user.id).first()
        if vote:
            vote.value = int(request.form['value'])
        else:
            vote = Vote(value=int(request.form['value']),
                        user_id=current_user.id,
                        recipe_id=recipe_id)
        db.session.add(vote)
        db.session.commit()
        recipe = Recipe.query.filter_by(id=recipe_id).first()
        recipe.calculate_average()
        db.session.add(recipe)
        db.session.commit()

        flash('Vote added successfully', 'success')
        return redirect(url_for('show_recipe', recipe_id=recipe_id))

    flash('Error: You can\'t give an empty or out of range vote', 'danger')
    return redirect(url_for('show_recipe', recipe_id=recipe_id))
예제 #15
0
def get_poll(poll_id):
    """View function for get poll page."""
    if not utils.valid_session(session):
        # User couldn't present valid credentials, so generate clean ones.
        # TODO: Fix DB stuff to do this all at once?
        cookie_id = db_funcs.new_cookie()
        cookie_hash = binascii.hexlify(os.urandom(32)).decode("ascii")
        session["id"] = cookie_id
        session["votes"] = []
        session["cookie_hash"] = cookie_hash
        session.permanent = True
        session.modified = True
        db_funcs.update_cookie(cookie_id, cookie_hash,
                               int(datetime.now().timestamp()))
        current_app.logger.info("New session instantiated")
    # If the user looks trustworthy, don't ask them for a captcha.
    if len(session["votes"]) < 5:
        form = VoteFormWithCaptcha()
    else:
        form = VoteForm()
    if current_app.config["DEBUG"]:
        # Recaptcha probably won't work
        form = VoteForm()
    # Query database for poll details.
    row = db_funcs.get_poll(poll_id)
    if row is None:
        abort(404)
    if row["close_date"] < datetime.now().timestamp():
        # Poll is expired and should be closed.
        db_funcs.close_poll(poll_id)
        generate_results(poll_id)
        # Redirect to results.
        return redirect(url_for("polls.get_results", poll_id=poll_id))
    # Check if the poll is in the user's voting record already.
    if poll_id in session["votes"]:
        already_voted = True
    else:
        already_voted = False
    # TODO: Fix the HTML for that so it isn't awful?
    # Argh why can't I flash to current request.
    if request.method == "POST":
        if already_voted and not current_app.config["ALLOW_REPEAT_VOTES"]:
            # Users aren't allowed to vote twice.
            flash("You've already voted on this poll")
            return redirect(url_for("polls.get_poll", poll_id=poll_id))
        if not form.validate_on_submit():
            for error_field, errors in form.errors.items():
                for error in errors:
                    flash("{0}: {1}".format(error_field, error))
            return redirect(url_for("polls.get_poll", poll_id=poll_id))
        # TODO: more aggressively deny voting with no credential?
        # or does CSRF token work alone?

        # Which choices are recorded in the database?
        valid_choices = [row["choice_number"]
                         for row in db_funcs.get_choices(poll_id)]
        choices = []
        # User should've sent their choice preferences like 1;2;3;4.
        # Split and iterate over them.
        for choice in form.ballot_json.data.split(";"):
            try:
                # Is this choice a valid int? And is it in the database?
                if int(choice) in valid_choices:
                    # If so store it in 'choices'.
                    choices.append(int(choice))
            # If not, ignore it.
            except ValueError:
                continue
        if len(choices) == 0:
            flash("You have to select at least one valid choice")
            return redirect(url_for("polls.get_poll", poll_id=poll_id))
        # Serialise the vote for storage in database.
        ballot_string = ",".join(map(str, choices))
        db_funcs.add_vote(poll_id, ballot_string)
        # Vote was successfully recorded; add poll to user's voting record.
        session["votes"].append(poll_id)
        cookie_hash = binascii.hexlify(os.urandom(32)).decode("ascii")
        session["cookie_hash"] = cookie_hash
        session.modified = True
        db_funcs.update_cookie(session["id"], cookie_hash,
                               int(datetime.now().timestamp()))
        if row["early_results"]:
            # Early results enabled for this poll, send user to preview page.
            return redirect(url_for("polls.get_results", poll_id=poll_id))
        else:
            # Early results not enabled, redirect to homepage.
            return redirect(url_for("home"))
    # This is a GET request, prepare template with details for requested poll.
    title, question = row["title"], row["text"]
    close_date = datetime.fromtimestamp(row["close_date"])
    # TODO: handle more properly
    if datetime.now() >= close_date:
        return redirect(url_for("polls.get_results", poll_id=poll_id))
    early_results = row["early_results"]
    choices = {row["choice_number"]: row["text"] for row in
               db_funcs.get_choices(poll_id)}
    choices_json = [{"name": v, "num": k} for k, v in choices.items()]
    return render_template("poll.html", title=title,
                                        question=question,
                                        choices=choices,
                                        close_date=str(close_date),
                                        poll_id=poll_id,
                                        choices_json=choices_json,
                                        early_results=early_results,
                                        form=form,
                                        already_voted=already_voted)
예제 #16
0
def all_recipes():
    form = VoteForm()
    recipes = Recipe.query.filter_by(is_public=True).order_by(Recipe.id.desc()).all()
    return render_template('recipes/all_recipes.html', recipes=recipes, form=form)
예제 #17
0
def view_voting():
    votes = {}
    if request.method == 'GET':
        if 'id' in request.args:
            uid = request.args.get('id')
            result = db_session.query(Voting).filter_by(id=uid).first()

            form = VoteForm()
            options = db_session.query(Option).filter_by(voting_id=uid).all()
            choices = []
            votes['number'] = {}
            votes['user'] = 0
            for option in options:
                choices.append((option.id, option.name))
                votes['number'][option.name] = db_session.query(
                    VotesUsers).filter_by(option_id=option.id).count()
                votes['user'] += db_session.query(VotesUsers).filter_by(
                    option_id=option.id).filter_by(
                        user_id=current_user.id).count()
            form.option.choices = choices

            if result.end_date + timedelta(1) > date.today(
            ):  #bigger means older
                votes['end'] = 0
            else:
                votes['end'] = 1

            return render_template('voting.html',
                                   result=result,
                                   form=form,
                                   votes=votes,
                                   title='cutrenet',
                                   subtitle=result.name)
        elif not current_user.has_role('admin'):
            flash(u'No tienes permisos para añadir o borrar votaciones',
                  'error')
            return redirect('/votaciones', code=302)
        elif 'add' in request.args:
            form = VotingForm()
            return render_template('voting.html',
                                   form=form,
                                   title='cutrenet',
                                   subtitle="new voting")
        elif 'delete' in request.args:
            delete = request.args.get('delete')
            voting = db_session.query(Voting).filter_by(id=delete).first()
            db_session.delete(voting)
            db_session.commit()
            flash(u'Votación eliminada', 'success')
            return redirect('/votaciones', code=302)
        else:
            flash(u'Tienes que seleccionar una votación', 'error')
            return redirect('/votaciones', code=302)

    if request.method == 'POST':
        if 'add' in request.args and current_user.has_role('admin'):
            voting = Voting()
            form = VotingForm()
            if form.validate_on_submit():
                voting.name = request.form['name']
                voting.description = request.form['description']
                voting.start_date = form.start_date.data
                voting.end_date = form.end_date.data
                names = request.form['options'].split('|')

                for name in names:
                    option = Option()
                    option.name = name
                    voting.options.append(option)

                db_session.add(voting)
                db_session.commit()
                flash(u'Votación añadida', 'success')
                return redirect('votaciones', code=302)
            return render_template('voting.html',
                                   form=form,
                                   votes=votes,
                                   title='cutrenet',
                                   subtitle="new voting")
        elif 'vote' in request.args:
            uid = request.args.get('vote')
            form = VoteForm()
            options = db_session.query(Option).filter_by(voting_id=uid).all()
            choices = []
            votes['number'] = {}
            votes['user'] = 0
            for option in options:
                choices.append((option.id, option.name))
                votes['number'][option.name] = db_session.query(
                    VotesUsers).filter_by(option_id=option.id).count()
                votes['user'] += db_session.query(VotesUsers).filter_by(
                    option_id=option.id).filter_by(
                        user_id=current_user.id).count()
            form.option.choices = choices

            result = db_session.query(Voting).filter_by(id=uid).first()
            if result.end_date + timedelta(1) > date.today(
            ):  #bigger means older
                votes['end'] = 0
            else:
                votes['end'] = 1
            if form.validate_on_submit():
                if votes['user'] == 0:
                    option = db_session.query(Option).filter_by(
                        id=request.form['option']).first()
                    user = db_session.query(User).filter_by(
                        id=current_user.id).first()
                    option.votes.append(user)
                    db_session.add(option)
                    db_session.commit()
                    votes['user'] = 0
                    for option in options:
                        votes['number'][option.name] = db_session.query(
                            VotesUsers).filter_by(option_id=option.id).count()
                    votes['user'] = 1
                    flash(u'Voto registrado', 'success')
                else:
                    flash(u'Ya has votado, mamón', 'alert')
            return render_template('voting.html',
                                   form=form,
                                   result=result,
                                   votes=votes,
                                   title='cutrenet',
                                   subtitle=u"voted ✔️")