Example #1
0
def uploadPhoto():
    if request.method == 'POST':
        # check if the post request has the file part
        if 'file' not in request.files:
            flash('No file part')
            return redirect(request.url)
        file = request.files['file']
        print('requests: ', request.files['file'])
        # if user does not select file, browser also
        # submit a empty part without filename
        if file.filename == '':
            flash('No selected file')
            return redirect(request.url)
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            print('path: ', os.path.join(app.config['UPLOAD_FOLDER'],
                                         filename))
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            session['photo'] = filename
            session['path'] = '../uploads/' + filename
            return redirect('/colorpicker')
            # return redirect(url_for('uploadPhoto',
            #                         filename=filename))

    images = os.listdir(os.path.join(app.static_folder, "images"))

    return render_template('pickFile.html', images=images)
Example #2
0
def eleicoes_para_votar_comum():
    '''
    Método responsável por mostrar as eleições as quais o usuário pode votar a fim de serem exibidas para que o mesmo escolha uma.
    :return:
    '''
    if not session.get('autenticado'):
        flash("Você precisa estar autenticado para acessar essa página!")
        return redirect(url_for('autenticar'))

    form = EscolherEleicaoForm()
    session.pop('id_eleicao', None)
    session.pop('id_pergunta', None)

    # Eleicões abertas no geral
    eleicoes_abetas = Eleicao.query.filter_by(estadoEleicao=True,
                                              fimEleicao=None,
                                              apuradaEleicao=False).all()

    if not eleicoes_abetas:
        flash("Nenhuma eleição aberta no momento!")
        return redirect(url_for('autenticado_comum'))
    else:
        for eleicao in eleicoes_abetas:
            form.eleicao.choices.append(
                (eleicao.idEleicao, eleicao.nomeEleicao))

    if request.method == 'GET':
        return render_template('eleicoes_para_votar_comum.html', form=form)

    if form.validate_on_submit():
        session['id_eleicao'] = form.eleicao.data

        return redirect(url_for('votar_em_eleicao_comum'))
Example #3
0
def upload_file():
    basedir = os.path.abspath(os.path.dirname(__file__))

    if request.method == 'POST':
        # check if the post request has the file part
        if 'file' not in request.files:
            flash('No file part')
            return redirect(request.url)
        file = request.files['file']
        # if user does not select file, browser also
        # submit a empty part without filename
        if file.filename == '':
            flash('No selected file')
            return redirect(request.url)
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(
                os.path.join(basedir, app.config['UPLOAD_FOLDER'], filename))

            var = myImageVision(file.filename)
            ##return redirect(url_for('static',
            ##                        filename=filename,message=(jsonify(message=var), 200)))
            return jsonify(Anger=var[0], Joy=var[1], Surprise=var[2]), 200

    return '''
Example #4
0
def apurar_eleicao():
    '''
    Apurar uma eleição encerrada
    :return:
    '''
    if not session.get('autenticado'):
        flash("Você precisa estar autenticado para acessar essa página!")
        return redirect(url_for('autenticar'))
    else:
        if not session.get('admin'):
            flash(
                "Você precisa estar logado como administrador para acessar essa página!"
            )
            return redirect(url_for('autenticar'))
        else:
            form = ApurarEleicaoForm()
            session['id_eleicao'] = None

            eleicoes = Eleicao.query.filter_by(
                loginPessoa=session.get('login_pessoa'),
                estadoEleicao=False,
                apuradaEleicao=False).all()

            if not eleicoes:
                flash('Não há eleicões para serem apuradas!')
                return redirect(url_for('autenticado_admin'))

            eleicoes_a_serem_apuradas = []

            for eleicao in eleicoes:
                if eleicao.fimEleicao is not None:
                    eleicoes_a_serem_apuradas.append(eleicao)

            if not eleicoes_a_serem_apuradas:
                flash("Não há eleições para apurar!")
                return redirect(url_for('autenticado_admin'))

            else:
                for eleicao in eleicoes_a_serem_apuradas:
                    form.eleicao.choices.append(
                        (eleicao.idEleicao, eleicao.nomeEleicao))

            if request.method == 'GET':
                return render_template('apurar_eleicao.html', form=form)

            if form.validate_on_submit():
                eleicao = Eleicao.query.filter_by(
                    idEleicao=form.eleicao.data).first()
                eleicao.apuradaEleicao = True

                db.session.commit()
                flash("Eleição apurada!")

                session.pop('id_eleicao', None)
                session.pop('id_pergunta', None)
                session.pop('id_resposta', None)

                return redirect(url_for('autenticado_admin'))
Example #5
0
 def wrapper(*args, **kwargs):
     # 判断session对象中是否有seesion['user']等于root,
     # 如果包含信息, 则登录成功, 可以访问主页;
     # 如果不包含信息, 则未登录成功, 跳转到登录界面;;
     if session.get('user', None) == 'root':
         return f(*args, **kwargs)
     else:
         flash("只有管理员root才能访问%s" % (f.__name__))
         return redirect(url_for('login'))
Example #6
0
def run_application(app_name):
    app = application.get_by_name(app_name)
    if app.is_running():
        flash(app_name +" is running already", "info")
        return False
    port = get_free_port()
    os.system('source ./scripts/startApp.sh '+app_name+ " "+ str(port)+" "+ app.get_run_file_name())
    app.set_port(port)
    app.save()
Example #7
0
def autenticado_comum():
    '''
    Página inicial do usuário comum.
    :return:
    '''
    if not session.get('autenticado'):
        flash("Você precisa estar autenticado para acessar essa página!")
        return redirect(url_for('autenticar'))

    return render_template('autenticado_comum.html')
Example #8
0
def save_to_wish(isbn):
    if current_user.can_save_to_list(isbn):
        with db.auto_commit():
            wish = Wish()
            wish.isbn = isbn
            wish.uid = current_user.id
            current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
            db.session.add(wish)
    else:
        flash('这本书已经添加至你的赠送清单或已存在于你的心愿清单,请不要重复添加')
    return redirect(url_for('web.book_detail', isbn=isbn))
Example #9
0
def mostrar_resultado():
    '''
    Método responsável por mostrar os resultados de uma eleição
    :return:
    '''

    # Verifica se tem um id_eleicao
    if not session.get('id_eleicao'):
        return redirect(url_for('autenticado_admin'))

    if not session.get('autenticado'):
        flash("Você precisa estar autenticado para acessar essa página!")
        return redirect(url_for('autenticar'))
    else:
        if not session.get('admin'):
            flash(
                "Você precisa estar logado como administrador para acessar essa página!"
            )
            return redirect(url_for('autenticar'))
        else:

            eleicao = Eleicao.query.filter_by(
                idEleicao=session.get('id_eleicao'),
                loginPessoa=session.get('login_pessoa')).first()
            nome_eleicao = eleicao.nomeEleicao

            perguntas = Pergunta.query.filter_by(
                idEleicao=session.get('id_eleicao')).all()

            lista_questoes = []

            for pergunta in perguntas:
                id_pergunta = pergunta.idPergunta
                lista_respostas = []

                respostas = Resposta.query.filter_by(
                    idPergunta=id_pergunta,
                    idEleicao=session.get('id_eleicao')).all()

                for resposta in respostas:
                    lista_respostas.append(resposta)

                lista_questao_respostas = [pergunta, lista_respostas]
                lista_questoes.append(lista_questao_respostas)

            session.pop('id_eleicao', None)
            session.pop('id_pergunta', None)
            session.pop('id_resposta', None)

    if request.method == 'GET':
        return render_template('mostrar_resultado.html',
                               lista_questoes=lista_questoes,
                               tituloEleicao=nome_eleicao)
Example #10
0
def autenticado_admin():
    '''
    Página inicial do adminsitrador.
    :return:
    '''
    if not session.get('autenticado'):
        flash("Você precisa estar autenticado para acessar essa página!")
        return redirect(url_for('autenticar'))
    else:
        if not session.get('admin'):
            flash(
                "Você precisa estar logado como administrador para acessar essa página!"
            )
            return redirect(url_for('autenticar'))

    return render_template('autenticado_admin.html')
Example #11
0
def demo1():
    if request.method == "POST":
        # 取到表单中提交上来的三个参数
        username = request.form.get("username")
        password = request.form.get("password")
        password2 = request.form.get("password2")

        if not all([username, password, password2]):
            # 向前端界面弹出一条提示(闪现消息)
            flash("参数不足")
        elif password != password2:
            flash("两次密码不一致")
        else:
            # 假装做注册操作
            print(username, password, password2)
            return "success"

    return render_template('login.html')
Example #12
0
def submit_link():
    import urllib.request
    import base64
    import uuid
    from recognize import recognize
    if request.method == 'GET':
        userID = request.args.get('q', '')
        return render_template("submit_link.html", userID=userID)
    elif request.method == 'POST':
        url = request.form.get('url')
        userID = request.form.get('userID')
        # check if the post request has the file part
        if 'file' in request.files:

            file = request.files['file']

            # if user does not select file, browser also
            # submit an empty part without filename
            if file.filename == '':
                flash('No selected file')
                return redirect(request.url)
            if file and allowed_file(file.filename):
                filename = file.filename
                file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
                full_path = '{0}{1}'.format(UPLOAD_FOLDER, filename)
                path = 'img/{0}'.format(filename)
        elif url:
            uuid = uuid.uuid4()

            uuid = str(uuid)
            path = 'img/{0}.{1}'.format(uuid, 'png')
            full_path = '{0}/src/templates/{1}'.format(os.getcwd(), path)
            resource = urllib.request.urlopen(url)
            output = open(full_path, "wb")
            output.write(resource.read())
            output.close()
        else:
            flash('Please enter valid data')
            return redirect(request.url)
        with open(full_path, 'rb') as image:
            response = recognize(image.read(), path, userID)
            return render_template("result.html", score=response['score'],
                                   detected_labels=response['detected_labels'], imagePath=path, userID=userID)
Example #13
0
def create():
    if request.method == 'POST':
        title = request.form['title']
        body = request.form['body']
        error = None

        if not title:
            error = 'Title is required.'

        if error is not None:
            flash(error)
        else:
            db = get_db()
            db.execute(
                'INSERT INTO post (title, body, author_id)'
                ' VALUES (?, ?, ?)', (title, body, g.user['id']))
            db.commit()
            return redirect(url_for('blog.index'))

    return render_template('blog/create.html')
Example #14
0
def send_drift(gid):
    """
    交易
    :param gid:
    :return:
    """
    current_gift = Gift.query.get_or_404(gid)
    if current_gift.is_you_self_gift(current_user.id):
        flash("这本书是你自己的,你不能索要自己的书籍")
        return redirect(url_for('web.book_detail', isbn=current_gift.isbn))
    can = current_user.can_send_drift()
    if not can:
        return render_template('not_enough_beans.html', beans=current_user.beans)

    form = DriftForm(request.form)
    if request.method == 'POST' and form.validate():
        save_drift(drift_form=form, current_gift=current_gift)
        send_email(current_gift.user.email, '有人想要一本书', 'email/get_gift.html', wisher=current_user, gift=current_gift)
        return redirect(url_for('web.pending'))
    gifter = current_gift.user.summary
    return render_template('drift.html', gifter=gifter, user_beans=current_user.beans, form=form)
Example #15
0
def update(id):
    post = get_post(id)

    if request.method == 'POST':
        title = request.form['title']
        body = request.form['body']
        error = None

        if not title:
            error = 'Title is required.'

        if error is not None:
            flash(error)
        else:
            db = get_db()
            db.execute('UPDATE post SET title = ?, body = ?'
                       ' WHERE id = ?', (title, body, id))
            db.commit()
            return redirect(url_for('blog.index'))

    return render_template('blog/update.html', post=post)
Example #16
0
def encerrar_eleicao():
    '''
    Método que encerra uma eleição
    :return:
    '''
    if not session.get('autenticado'):
        flash("Você precisa estar autenticado para acessar essa página!")
        return redirect(url_for('autenticar'))
    else:
        if not session.get('admin'):
            flash(
                "Você precisa estar logado como administrador para acessar essa página!"
            )
            return redirect(url_for('autenticar'))

    form = EncerrarEleicaoForm()
    session['id_eleicao'] = None

    eleicoes = Eleicao.query.filter_by(loginPessoa=session.get('login_pessoa'),
                                       estadoEleicao=True,
                                       fimEleicao=None,
                                       apuradaEleicao=False).all()

    if not eleicoes:
        flash('Não há eleicões para serem ecerradas!')
        return redirect(url_for('autenticado_admin'))

    for eleicao in eleicoes:
        form.eleicao.choices.append((eleicao.idEleicao, eleicao.nomeEleicao))

    if request.method == 'GET':
        return render_template('encerrar_eleicao.html', form=form)

    if form.validate_on_submit():
        now = datetime.now()
        data = now.strftime("%m/%d/%Y, %H:%M:%S")

        eleicao = Eleicao.query.filter_by(idEleicao=form.eleicao.data).first()
        eleicao.fimEleicao = data
        eleicao.estadoEleicao = False

        db.session.commit()
        flash("Eleição encerrada!")

        session.pop('id_eleicao', None)
        session.pop('id_pergunta', None)
        session.pop('id_resposta', None)

        return redirect(url_for('autenticado_admin'))
Example #17
0
def criar_eleicao():
    '''
    Método responsável pela criação de uma eleição.
    :return:
    '''
    if not session.get('autenticado'):
        flash("Você precisa estar autenticado para acessar essa página!")
        return redirect(url_for('autenticar'))
    else:
        if not session.get('admin'):
            flash(
                "Você precisa estar logado como administrador para acessar essa página!"
            )
            return redirect(url_for('autenticar'))
        else:
            form = CriarEleicaoFrom()
            if request.method == 'GET':
                return render_template('criar_eleicao.html', form=form)

            if form.validate_on_submit():
                nome_eleicao = form.nomeEleicao.data

                verifica_nome_eleicao = Eleicao.query.filter_by(
                    nomeEleicao=nome_eleicao).first()

                if verifica_nome_eleicao is not None:
                    flash("Já existe uma eleição com esse nome!")
                    return redirect(url_for('criar_eleicao'))
                else:
                    now = datetime.now()
                    data = now.strftime("%m/%d/%Y, %H:%M:%S")

                    eleicao = Eleicao(loginPessoa=session.get('login_pessoa'),
                                      nomeEleicao=nome_eleicao,
                                      inicioEleicao=data,
                                      estadoEleicao=False,
                                      apuradaEleicao=False)
                    db.session.add(eleicao)
                    db.session.commit()
                    flash("Eleição criada!")

                    eleicao_info = Eleicao.query.filter_by(
                        nomeEleicao=nome_eleicao).first()
                    session['id_eleicao'] = eleicao_info.idEleicao
                    session['nome_eleicao'] = eleicao_info.nomeEleicao

                    return redirect(url_for('add_pergunta'))
Example #18
0
def add_resposta_1():
    '''
    Método que adiciona uma resposta a uma questão/pergunta.
    Seleciona a eleição a qual deseja inserir uma resposta a uma pergunta.
    :return:
    '''
    # Verifica se está autenticado
    if not session.get('autenticado'):
        flash("Você precisa estar autenticado para acessar essa página!")
        return redirect(url_for('autenticar'))
    else:
        # Verifica se é admin
        if not session.get('admin'):
            flash(
                "Você precisa estar logado como administrador para acessar essa página!"
            )
            return redirect(url_for('autenticar'))
        else:
            form = EscolherEleicaoForm()
            session['id_eleicao'] = None

            # Filtra as eleições do usuário autenticado
            eleicoes = Eleicao.query.filter_by(
                loginPessoa=session.get('login_pessoa'),
                estadoEleicao=False,
                fimEleicao=None,
                apuradaEleicao=False).all()

            # Só mostrar as eleicoes que tem perguntas
            eleicoes_com_perguntas = []
            for eleicao in eleicoes:
                perguntas = Pergunta.query.filter_by(
                    idEleicao=eleicao.idEleicao).first()
                if perguntas is not None:
                    eleicoes_com_perguntas.append(eleicao)

            if not eleicoes_com_perguntas:
                flash(
                    "Não há eleições com perguntas para adicionar respostas!")
                return redirect(url_for('autenticado_admin'))

            else:

                for eleicao in eleicoes_com_perguntas:
                    form.eleicao.choices.append(
                        (eleicao.idEleicao, eleicao.nomeEleicao))

            if request.method == 'GET':
                return render_template('add_resposta_1.html', form=form)

            if form.validate_on_submit():
                session['id_eleicao'] = form.eleicao.data
                return redirect(url_for('add_resposta_2'))
Example #19
0
def eleicao_para_resultado():
    '''
    Método responsável pela escolha da eleição para apresentar o resultado
    :return:
    '''
    if not session.get('autenticado'):
        flash("Você precisa estar autenticado para acessar essa página!")
        return redirect(url_for('autenticar'))
    else:
        if not session.get('admin'):
            flash(
                "Você precisa estar logado como administrador para acessar essa página!"
            )
            return redirect(url_for('autenticar'))
        else:

            form = EscolherEleicaoForm()
            session['id_eleicao'] = None

            eleicoes = Eleicao.query.filter_by(
                loginPessoa=session.get('login_pessoa'),
                estadoEleicao=False,
                apuradaEleicao=True).all()

            if not eleicoes:
                flash('Não há eleicões para apresentar o resultado!')
                return redirect(url_for('autenticado_admin'))

            eleicoes_encerradas_apuradas = []
            for eleicao in eleicoes:
                if eleicao.fimEleicao is not None:
                    eleicoes_encerradas_apuradas.append(eleicao)

            for eleicao in eleicoes_encerradas_apuradas:
                form.eleicao.choices.append(
                    (eleicao.idEleicao, eleicao.nomeEleicao))

            if request.method == 'GET':
                return render_template('eleicao_para_resultado.html',
                                       form=form)

            if form.validate_on_submit():
                session['id_eleicao'] = form.eleicao.data
                return redirect(url_for('mostrar_resultado'))
Example #20
0
def add_eleitores():
    '''
    Método responsável pela escolha da eleição para adicionar eleitores.
    :return:
    '''
    if not session.get('autenticado'):
        flash("Você precisa estar autenticado para acessar essa página!")
        return redirect(url_for('autenticar'))
    else:
        if not session.get('admin'):
            flash(
                "Você precisa estar logado como administrador para acessar essa página!"
            )
            return redirect(url_for('autenticar'))
        else:

            form = EscolherEleicaoForm()
            session['id_eleicao'] = None

            eleicoes = Eleicao.query.filter_by(
                loginPessoa=session.get('login_pessoa'),
                estadoEleicao=False,
                fimEleicao=None,
                apuradaEleicao=False).all()

            if not eleicoes:
                flash('Não há eleicões para inserir eleitores!')
                return redirect(url_for('autenticado_admin'))

            for eleicao in eleicoes:
                form.eleicao.choices.append(
                    (eleicao.idEleicao, eleicao.nomeEleicao))

            if request.method == 'GET':
                return render_template('add_eleitores.html', form=form)

            if form.validate_on_submit():
                session['id_eleicao'] = form.eleicao.data
                return redirect(url_for('escolher_eleitores'))
Example #21
0
def do_admin_login():
    if request.form['password'] == 'password' and request.form['username'] == '*****@*****.**':
        session['logged_in'] = True
    else:
        flash('wrong password!')
    return home()
Example #22
0
 def wrap(*args, **kwargs):
     if 'logged_in' in session:
         return f(*args, **kwargs)
     else:
         flash('You need to login first.')
         return redirect(url_for('/login'))
Example #23
0
def add_pergunta():
    '''
    Método que adiciona uma pergunta/questão a uma eleição.
    :return:
    '''
    if not session.get('autenticado'):
        flash("Você precisa estar autenticado para acessar essa página!")
        return redirect(url_for('autenticar'))
    else:
        if not session.get('admin'):
            flash(
                "Você precisa estar logado como administrador para acessar essa página!"
            )
            return redirect(url_for('autenticar'))
        else:
            form = AdicionarPerguntaForm()

            eleicoes = Eleicao.query.filter_by(
                loginPessoa=session.get('login_pessoa'),
                estadoEleicao=False,
                apuradaEleicao=False).all()
            if len(eleicoes) == 0:
                flash("Você não possui eleições para cadastrar perguntas!")
                return redirect(url_for('autenticado_admin'))

            # Se não criou nenhuma eleicao durante a sessão, session.get('id_eleicao') vazio
            if session.get('id_eleicao') is None:
                eleicoes = Eleicao.query.filter_by(
                    loginPessoa=session.get('login_pessoa'),
                    estadoEleicao=False,
                    apuradaEleicao=False).all()

                if eleicoes is None:
                    return redirect(url_for('autenticado_admin'))

                for eleicao in eleicoes:
                    form.eleicao.choices.append(
                        (eleicao.idEleicao, eleicao.nomeEleicao))
            # Se possui algo em session.get('id_eleicao')
            else:
                form.eleicao.choices = [(session.get('id_eleicao'),
                                         session.get('nome_eleicao'))]
                eleicoes = Eleicao.query.filter_by(
                    loginPessoa=session.get('login_pessoa'),
                    estadoEleicao=False,
                    apuradaEleicao=False).all()

                if eleicoes is None:
                    return redirect(url_for('autenticado_admin'))

                eleicoes_sem_id_eleicao = []
                for eleicao in eleicoes:
                    if eleicao.idEleicao != session.get('id_eleicao'):
                        eleicoes_sem_id_eleicao.append(eleicao)

                for eleicao in eleicoes_sem_id_eleicao:
                    form.eleicao.choices.append(
                        (eleicao.idEleicao, eleicao.nomeEleicao))

            if request.method == 'GET':
                return render_template('add_pergunta.html', form=form)

            if form.validate_on_submit():

                nome_pergunta = form.nomePergunta.data
                min_respostas = form.minRespostas.data
                max_respostas = form.maxRespostas.data

                session['id_eleicao'] = form.eleicao.data

                if min_respostas == 0 or max_respostas == 0:
                    flash("")
                    return render_template('add_pergunta.html', form=form)

                if min_respostas > max_respostas:
                    flash(
                        "O número mínimo de respostas deve ser menor que o número máximo!"
                    )
                    return render_template('add_pergunta.html', form=form)

                verifica_pergunta_eleicao = Pergunta.query.filter_by(
                    idEleicao=session.get('id_eleicao'),
                    pergunta=nome_pergunta).first()

                if verifica_pergunta_eleicao is not None:
                    flash("Essa questão já está inserida nessa eleição!")
                    return render_template('add_pergunta.html', form=form)
                else:
                    pergunta = Pergunta(idEleicao=session.get('id_eleicao'),
                                        pergunta=nome_pergunta,
                                        minRespostas=min_respostas,
                                        maxRespostas=max_respostas)
                    db.session.add(pergunta)
                    db.session.commit()
                    flash("Pergunta adicionada!")

                    pergunta_info = Pergunta.query.filter_by(
                        pergunta=nome_pergunta).first()
                    session['id_pergunta'] = pergunta_info.idPergunta
                    session['nome_pergunta'] = pergunta_info.pergunta

                    session.pop('id_eleicao', None)
                    return render_template('add_pergunta.html', form=form)
            else:
                flash("Números de respostas inconsistentes!")
                session.pop('id_eleicao', None)
                return render_template('add_pergunta.html', form=form)
Example #24
0
def abrir_eleicao():
    '''
    Abrir uma eleição, liberar votação
    :return:
    '''
    if not session.get('autenticado'):
        flash("Você precisa estar autenticado para acessar essa página!")
        return redirect(url_for('autenticar'))
    else:
        if not session.get('admin'):
            flash(
                "Você precisa estar logado como administrador para acessar essa página!"
            )
            return redirect(url_for('autenticar'))

    form = AbrirEleicaoForm()
    session['id_eleicao'] = None

    eleicoes = Eleicao.query.filter_by(loginPessoa=session.get('login_pessoa'),
                                       estadoEleicao=False,
                                       fimEleicao=None,
                                       apuradaEleicao=False).all()

    if not eleicoes:
        flash("Não há eleições para abrir!")
        return redirect(url_for('autenticado_admin'))

    for eleicao in eleicoes:
        form.eleicao.choices.append((eleicao.idEleicao, eleicao.nomeEleicao))

    if request.method == 'GET':
        return render_template('abrir_eleicao.html', form=form)

    if form.validate_on_submit():

        eleitores = Eleitor.query.filter_by(idEleicao=form.eleicao.data).all()

        if not eleitores:
            flash('Essa eleição não possui eleitores cadastrados!')
            return redirect(url_for('abrir_eleicao'))

        perguntas = Pergunta.query.filter_by(idEleicao=form.eleicao.data).all()

        if not perguntas:
            flash('A leição não possui perguntas cadastradas!')
            return redirect(url_for('abrir_eleicao'))

        for pergunta in perguntas:
            id_pergunta = pergunta.idPergunta
            nome_pergunta = pergunta.pergunta
            max_respostas_teoria = pergunta.maxRespostas

            respostas = Resposta.query.filter_by(idPergunta=id_pergunta).all()
            # Remove pois 1 resposta vai ser sempre "Branco"
            max_respostas_pratica = (len(respostas) - 1)

            if max_respostas_pratica < max_respostas_teoria:
                respostas_faltando = max_respostas_teoria - max_respostas_pratica
                flash("Você deve cadastrar " + str(respostas_faltando) +
                      " respostas para a pergunta: " + nome_pergunta)
                session['id_pergunta'] = id_pergunta
                return redirect(url_for('abrir_eleicao'))

    now = datetime.now()
    data = now.strftime("%m/%d/%Y, %H:%M:%S")

    eleicao = Eleicao.query.filter_by(idEleicao=form.eleicao.data).first()
    eleicao.inicioEleicao = data
    eleicao.estadoEleicao = True

    db.session.add(eleicao)
    db.session.commit()

    session.pop('id_eleicao', None)
    session.pop('id_pergunta', None)
    session.pop('id_resposta', None)

    flash("Eleição aberta!")

    return redirect(url_for('autenticado_admin'))
Example #25
0
def escolher_eleitores():
    '''
    Método responsável pela escolha dos eleitores a serem inseridos em uma eleição.
    :return:
    '''
    # Verifica se tem um id_eleicao
    if not session.get('id_eleicao'):
        return redirect(url_for('autenticado_admin'))

    if not session.get('autenticado'):
        flash("Você precisa estar autenticado para acessar essa página!")
        return redirect(url_for('autenticar'))
    else:
        if not session.get('admin'):
            flash(
                "Você precisa estar logado como administrador para acessar essa página!"
            )
            return redirect(url_for('autenticar'))
        else:
            form = EscolherEleitoresForm()

            if request.method == 'GET':
                return render_template('escolher_eleitores.html', form=form)

            if form.validate_on_submit():
                eleitores_1 = form.eleitores1.data
                eleitores_2 = form.eleitores2.data
                eleitores_3 = form.eleitores3.data

                print(eleitores_1)
                print(eleitores_2)
                print(eleitores_3)

                if eleitores_1:
                    path = 'eleitores1.txt'
                    file = open(path, 'r')
                    for login in file:
                        # Verificar se esse login ja está na eleição
                        login = login.strip('\n')
                        eleitor_verifica = Eleitor.query.filter_by(
                            loginPessoa=login,
                            idEleicao=session.get('id_eleicao')).first()
                        print(eleitor_verifica)
                        if not eleitor_verifica:
                            eleitor = Eleitor(
                                loginPessoa=login,
                                idEleicao=session.get('id_eleicao'),
                                statusEleitor=False)
                            db.session.add(eleitor)
                            db.session.commit()
                    file.close()

                if eleitores_2:
                    path = 'eleitores2.txt'
                    file = open(path, 'r')
                    for login in file:
                        login = login.strip('\n')
                        # Verificar se esse login ja está na eleição
                        eleitor_verifica = Eleitor.query.filter_by(
                            loginPessoa=login,
                            idEleicao=session.get('id_eleicao')).first()
                        if not eleitor_verifica:
                            eleitor = Eleitor(
                                loginPessoa=login,
                                idEleicao=session.get('id_eleicao'),
                                statusEleitor=False)
                            db.session.add(eleitor)
                            db.session.commit()
                    file.close()

                if eleitores_3:
                    path = 'eleitores3.txt'
                    file = open(path, 'r')
                    for login in file:
                        login = login.strip('\n')
                        # Verificar se esse login ja está na eleição
                        eleitor_verifica = Eleitor.query.filter_by(
                            loginPessoa=login,
                            idEleicao=session.get('id_eleicao')).first()
                        if not eleitor_verifica:
                            eleitor = Eleitor(
                                loginPessoa=login,
                                idEleicao=session.get('id_eleicao'),
                                statusEleitor=False)
                            db.session.add(eleitor)
                            db.session.commit()
                    file.close()

                session.pop('id_eleicao', None)
                flash("Eleitores adicionados!")

                return redirect(url_for('autenticado_admin'))
Example #26
0
def votar_em_eleicao_comum():
    '''
       Método responsável por realizar o voto de um usuário comum.
       :return:
       '''
    # Verifica se tem um id_eleicao
    if not session.get('id_eleicao'):
        return redirect(url_for('eleicoes_para_votar_comum'))

    if not session.get('autenticado'):
        flash("Você precisa estar autenticado para acessar essa página!")
        return redirect(url_for('autenticar'))

    pessoa_nome = session.get('login_pessoa')
    eleicao_id = session.get('id_eleicao')

    eleitor = Eleitor.query.filter_by(loginPessoa=pessoa_nome,
                                      idEleicao=eleicao_id).first()

    if eleitor is None:
        flash("Você não pode votar nessa eleição!")
        return redirect(url_for('eleicoes_para_votar_comum'))

    else:
        #Verifica se o status é False
        status_eleitor = eleitor.statusEleitor

        if status_eleitor:
            flash("Você já votou nessa eleição!")
            return redirect(url_for('eleicoes_para_votar_comum'))

        else:
            eleicao = Eleicao.query.filter_by(
                idEleicao=session.get('id_eleicao')).first()
            nome_eleicao = eleicao.nomeEleicao

            perguntas = Pergunta.query.filter_by(
                idEleicao=session.get('id_eleicao')).all()

            lista_questoes_respostas = []

            for pergunta in perguntas:
                id_pergunta = pergunta.idPergunta
                lista_respostas = []

                respostas = Resposta.query.filter_by(
                    idPergunta=id_pergunta,
                    idEleicao=session.get('id_eleicao')).all()

                for resposta in respostas:
                    lista_respostas.append(resposta)

                tupla_questao_respostas = (pergunta, lista_respostas)

                lista_questoes_respostas.append(tupla_questao_respostas)

    form = MostraResultadosForm()

    if request.method == 'GET':
        return render_template('votar_em_eleicao_comum.html',
                               lista_questoes=lista_questoes_respostas,
                               tituloEleicao=nome_eleicao,
                               form=form)

    else:
        qtd_perguntas_respondidas = []

        resultado = list(request.form.items())
        resultado.pop()  # Removendo o ultimo item

        if not resultado:
            flash(
                "Você deve votar em todas as questões e respeitar os limites de mínimo e máximo de respostas!"
            )
            return redirect(url_for('eleicoes_para_votar_comum'))

        for itens in resultado:
            n_questao = itens[0].split('-')[0]
            qtd_perguntas_respondidas.append(n_questao)

        c = Counter(qtd_perguntas_respondidas)

        # Verificar se deixou de resposnder a alguma pergunta
        if len(c.values()) != len(perguntas):
            print(
                "Você deve votar em todas as questões e respeitar os limites de mínimo e máximo de respostas!"
            )
            return redirect(url_for('eleicoes_para_votar_comum'))
        else:
            # Verificar a quantidade de respostas para cada uma das perguntas
            indice = 0

            for pergunta in perguntas:
                min = pergunta.minRespostas
                max = pergunta.maxRespostas

                qtd_respostas = list(c.values())[indice]
                indice = indice + 1

                # print("----------------------")
                # print("Pergunta: " + pergunta.pergunta)
                # print("----------------------")
                # print("Mínimo: " + str(min))
                # print("Máximo: " + str(max))
                # print("----------------------")
                # print("Qtd de respostas: " + str(qtd_respostas))
                # print("----------------------")

                if qtd_respostas > max or qtd_respostas < min:
                    flash(
                        "Voceê deve respeitar os limites de mínimo e máximo de respostas!"
                    )
                    session.pop('id_eleicao', None)
                    session.pop('id_pergunta', None)
                    return redirect(url_for('eleicoes_para_votar_comum'))

            for itens in resultado:
                num_resposta = itens[0].split('-')[1]
                num = int(num_resposta)

                resposta = Resposta.query.filter_by(
                    idEleicao=session.get('id_eleicao'),
                    idResposta=num).first()
                resposta.votoResposta = resposta.votoResposta + 1
                db.session.add(resposta)
                db.session.commit()

            # return redirect(url_for('atualiza_status'))

            pessoa_nome = session.get('login_pessoa')
            eleicao_id = session.get('id_eleicao')

            # eleitor = Eleitor.query.filter_by(idEleicao=eleicao_id, loginPessoa=pessoa_nome).first()
            # print(eleitor.loginPessoa)

            Eleitor.query.filter_by(
                idEleicao=eleicao_id,
                loginPessoa=pessoa_nome).delete(synchronize_session=False)
            db.session.commit()

            flash("Votou!")

            session.pop('id_eleicao', None)
            session.pop('id_pergunta', None)
            session.pop('id_resposta', None)

            return redirect(url_for('autenticado_comum'))
Example #27
0
def add_resposta_2():
    '''
    Método que adiciona uma resposta a uma questão/pergunta.
    Seleciona a pergunta a qual deseja adicionar uma resposta.
    :return:
    '''
    # Verifica se tem um id_eleicao
    if not session.get('id_eleicao'):
        return redirect(url_for('autenticado_admin'))

    # Verifica se está autenticado
    if not session.get('autenticado'):
        flash("Você precisa estar autenticado para acessar essa página!")
        return redirect(url_for('autenticar'))
    else:
        # Verifica se é admin
        if not session.get('admin'):
            flash(
                "Você precisa estar logado como administrador para acessar essa página!"
            )
            return redirect(url_for('autenticar'))
        else:
            form = EscolherPerguntaAddRespostaForm()

            # Filtra as perguntas da eleição escolhida
            perguntas = Pergunta.query.filter_by(
                idEleicao=session.get('id_eleicao')).all()

            for pergunta in perguntas:
                form.pergunta.choices.append(
                    (pergunta.idPergunta, pergunta.pergunta))

            if request.method == 'GET':
                return render_template('add_resposta_2.html', form=form)

            if form.validate_on_submit():
                nome_resposta = form.resposta.data
                id_pergunta = form.pergunta.data

                # Verificar se essa resposta já existe para essa pergunta na eleicao eleicao
                verifica_resposta_pergunta = Resposta.query.filter_by(
                    resposta=nome_resposta,
                    idEleicao=session.get('id_eleicao'),
                    idPergunta=id_pergunta).first()

                if verifica_resposta_pergunta is not None:
                    flash(
                        "Essa resposta já foi cadastrada para essa pergunta!")
                    return render_template('add_resposta_1.html', form=form)

                else:
                    #Verifica se ja tem a resposta "ranco"
                    verifica_resposta_branco = Resposta.query.filter_by(
                        idPergunta=id_pergunta,
                        idEleicao=session.get('id_eleicao'),
                        resposta="Branco").first()
                    if not verifica_resposta_branco:
                        resposta = Resposta(
                            idPergunta=id_pergunta,
                            idEleicao=session.get('id_eleicao'),
                            resposta="Branco",
                            votoResposta=0)
                        db.session.add(resposta)
                        db.session.commit()

                    resposta = Resposta(idPergunta=id_pergunta,
                                        idEleicao=session.get('id_eleicao'),
                                        resposta=nome_resposta,
                                        votoResposta=0)
                    db.session.add(resposta)
                    db.session.commit()
                    flash("Resposta adicionada")

                    session.pop('id_eleicao', None)
                    session.pop('pergunta', None)
                    return redirect(url_for('autenticado_admin'))
Example #28
0
def autenticar():
    '''
    Autenticação do usuario e redirecionamento de página
    :return:
    '''
    # Verifica se está autenticado
    if session.get('autenticado'):
        if session.get('admin'):
            return redirect(url_for('autenticado_admin'))
        else:
            return redirect(url_for('autenticado_comum'))

    # Não está autenticado
    else:
        form = LoginForm()

        if request.method == 'GET':
            return render_template('login.html', form=form)

        if form.validate_on_submit():

            login_pessoa = form.login_pessoa.data
            password = form.password.data
            admin_button = form.admin_button.data

            verifica_pessoa = Pessoa.query.filter_by(
                loginPessoa=login_pessoa).first()

            # Verifica username
            if verifica_pessoa is not None:

                # Verifica senha
                if password == verifica_pessoa.senhaPessoa:

                    # Verificar se informou que é admin
                    if admin_button:

                        pessoa_admin = Pessoa.query.filter_by(
                            loginPessoa=login_pessoa, admin=True).first()

                        if pessoa_admin is not None:
                            session['admin'] = True
                            session[
                                'login_pessoa'] = verifica_pessoa.loginPessoa
                            session['name'] = verifica_pessoa.nomePessoa
                            session['autenticado'] = True
                            return redirect(url_for('autenticado_admin'))
                        else:
                            flash("O usuário não é administrador!")
                            return redirect(url_for('autenticar'))
                    else:
                        # Logando como usuário comum
                        session['admin'] = False
                        session['login_pessoa'] = verifica_pessoa.loginPessoa
                        session['name'] = verifica_pessoa.nomePessoa
                        session['autenticado'] = True
                        return redirect(url_for('autenticado_comum'))
                else:
                    flash("Senha incorreta!")
                    return redirect(url_for('autenticar'))
            else:
                flash("Usuário não encontrado!")
                return redirect(url_for('autenticar'))
        access_token, user_id, url_state = get_dropbox_auth_flow(request.session).finish(request.GET)
        user_profile = UserProfile.objects.get(user=request.user)
        user_profile.dropbox_token = access_token
        user_profile.save()

        messages.add_message(request, messages.SUCCESS, 'Successfully connected with Dropbox')
        return redirect('/dashboard')
    except DropboxOAuth2Flow.BadRequestException, e:
        return HttpResponseBadRequest()
    except DropboxOAuth2Flow.BadStateException, e:
        # Start the auth flow again.
        return redirect("/service_manager/dropbox/auth_start")
    except DropboxOAuth2Flow.CsrfException, e:
        return HttpResponseForbidden()
    except DropboxOAuth2Flow.NotApprovedException, e:
        flash('Not approved?  Why not, bro?')
        return redirect("/dashboard")
    except DropboxOAuth2Flow.ProviderException, e:
        print "Auth error: %s" % (e,)
        return HttpResponseForbidden()

@login_required
def dropbox_file_view(request):
    """
    The view for files/folders in a dropbox account
    """
    try:
        token = UserProfile.objects.get(user=request.user).dropbox_token
        if not token:  # Checks for existence of token
            messages.add_message(request, messages.ERROR, 'You have not connected with a Dropbox account yet.')
            return render(request, 'website/dashboard.html')