| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | 
"""Authentication module"""from flask import render_template, request, flash, Blueprint, redirect, url_forfrom app.models import User, Ballot, Question, Option, Vote, Codefrom app import dbBLUEPRINT = Blueprint(    'vote',    __name__,    template_folder='templates')@BLUEPRINT.route('/')def public_index():    """View list of votes"""    ballots = Ballot.query.all()    return render_template(        'vote/index.j2',        ballots=ballots,    )@BLUEPRINT.route('/<int:ballot_id>', methods=["GET", "POST"])def public_view(ballot_id):    """Vote and view results of ballot"""    ballot = Ballot.query.get(ballot_id)    if request.method == 'POST':        security_code = request.form['security_code']        code = Code.query.order_by(Code.expire_date.desc()).first()        user_id = None        for user in User.query.all():            if security_code == code.get_digest(user.id):                user_id = user.id        if user_id is not None:            for question_id, option_id in request.form.items():                if question_id == 'security_code':                    continue                question = Question.query.get(question_id)                if question.has_voten(user_id):                    flash('Je hebt al gestemd.', 'warning')                    return redirect(url_for('backend_backend_vote.view', ballot_id=ballot.id))                option = question.options.filter(Option.id == option_id).first()                vote = Vote()                vote.option_id = option.id                vote.user_id = user_id                db.session.add(vote)            db.session.commit()            flash('Succesvol gestemd.', 'success')        else:            flash('Fout in veiligheids code.', 'warning')    return render_template(        'vote/view.j2',        ballot=ballot,    )
 |