コード例 #1
0
def cria_segundo_turno(id_eleicao, segundo_turno):
    turno = Turno()
    turno.id_eleicao = id_eleicao
    turno.turno = 2
    cria_turno_cargo(turno, segundo_turno)
    db.create(turno)
    db.commit()
コード例 #2
0
def apurar_votos(tcr, id_apuracao):
    print(
        f'Iniciada apuração: {tcr.turnoCargo.cargo.nome} ==========================================================='
    )
    votos = db.query(VotoEncriptado)\
              .filter(VotoEncriptado.id_turno_cargo_regiao == tcr.id_turno_cargo_regiao)\
              .all()

    for voto_enc in votos:
        voto = mf.cria_voto(voto_enc, id_apuracao)
        db.create(voto)
        db.commit()
    sql = '''UPDATE candidato c 
             SET qt_votos = (SELECT count(*) FROM voto_apurado va 
                             WHERE id_turno_cargo_regiao = :idTurnoCargoRegiao 
                             AND id_apuracao = :idApuracao
                             AND va.id_candidato = c.id_candidato)
             WHERE c.id_turno_cargo_regiao = :idTurnoCargoRegiao'''

    db.native(sql, {
        'idTurnoCargoRegiao': tcr.id_turno_cargo_regiao,
        'idApuracao': id_apuracao
    })
    db.commit()
    print(
        f'Finalizada apuração: {tcr.turnoCargo.cargo.nome} ========================================================='
    )
コード例 #3
0
def cadastrar_coligacao(dados):
    coligacao = mf.cria_coligacao(dados)
    validar_coligacao(coligacao)
    if coligacao.id_coligacao is None:
        db.create(coligacao)
    db.commit()
    return str(coligacao.id_coligacao)
コード例 #4
0
def salvar(dados):
    eleicao = mf.cria_eleicao(dados)
    validar_eleicao(eleicao)
    if eleicao.id_eleicao is None:
        db.create(eleicao)
    db.commit()
    return str(eleicao.id_eleicao)
コード例 #5
0
def insere_apuracao(turno):
    apuracao = Apuracao()
    apuracao.id_turno = turno.id_turno
    apuracao.inicio_apuracao = str(datetime.now())
    db.create(apuracao)
    db.commit()

    return apuracao.id_apuracao
コード例 #6
0
def votar(user, id_eleicao, votos):
    valida_credenciais(votos['usuario'], votos['senha'],
                       user.eleitor.id_eleitor, votos['pin'])
    id_eleitor = c.enc(user.eleitor.id_eleitor)
    id_turno = valida_usuario_votou_e_retorna_turno_aberto(id_eleicao, user)
    id_cidade = user.eleitor.id_cidade
    for voto in votos['votos']:
        voto_enc = mf.cria_voto_encriptado(voto, id_cidade, id_eleitor)
        db.create(voto_enc)
    criar_hash_voto(user, votos['votos'], id_turno)
    db.commit()
コード例 #7
0
def gerar_pin(user):
    if db.busca_pin_valido_por_id_eleitor(user.eleitor.id_eleitor) is None:
        pin = PinEleitor()
        pin.id_eleitor = user.eleitor.id_eleitor
        user_pin = senha_util.generate_pin()
        pin.pin = senha_util.encrypt_md5(user_pin)
        pin.criacao = datetime.now()
        db.create(pin)
        db.commit()

        msg = f'Seu código para votar é: {user_pin} \nO código é válido por apenas 5 minutos!'
        email_util.enviar_email(user.email, msg, 'Código para votação')
コード例 #8
0
def cria_pessoa(i):
    pessoa = Pessoa()
    pessoa.nome = f'Teste {i}'
    pessoa.cpf = numero_aleatorio(11)
    pessoa.email = f'teste{i}[email protected]'
    eleitor = Eleitor()
    eleitor.id_cidade = 1
    eleitor.zona_eleitoral = numero_aleatorio(3)
    eleitor.secao = numero_aleatorio(4)
    eleitor.numero_inscricao = numero_aleatorio(12)
    pessoa.eleitor = eleitor
    db.create(pessoa)
    print(f'Criando pessoa {pessoa.nome}')
コード例 #9
0
def salvar_pessoa(dados):
    pessoa, senha = mf.cria_pessoa(dados)
    validar_pessoa(pessoa)
    if pessoa.id_pessoa is None:
        db.create(pessoa)
    db.commit()

    if senha is not None:
        corpo_email = f'Parabéns! Agora você pode votar pela internet com as credenciais abaixo:.\n'\
                      f'Usuário: {pessoa.eleitor.numero_inscricao}\n'\
                      f'Senha: {senha}\n\n' \
                      f'Sugerimos que você troque a senha ao entrar.'
        email_util.enviar_email(pessoa.email, corpo_email, 'Cadastro no Sistema de Votação Online')
    return str(pessoa.id_pessoa)
コード例 #10
0
def criar_hash_voto(user, votos, id_turno):
    hash_voto = ''
    for voto in votos:
        hash_voto += voto['idCandidato']
    hash_voto = senha_util.encrypt_md5(hash_voto)
    agora = datetime.now()
    agora_formatado = agora.strftime('%H:%M:%S %d/%m/%Y')

    eleitor_turno = mf.cria_eleitor_turno(user.eleitor, id_turno, hash_voto,
                                          str(agora))
    user.eleitor.eleitor_turnos.append(eleitor_turno)
    db.create(eleitor_turno)

    msg = f'Voto computado com sucesso às {agora_formatado}!\nA sua hash é: {hash_voto}'
    email_util.enviar_email(user.email, msg, 'Confirmação do voto')
コード例 #11
0
def cria_candidatos(id_tcr, qt):
    for i in range(qt):
        print(f'Criando candidato {i}')
        candidato = Candidato()
        candidato.id_pessoa = randint(100, 5002)
        partido = db.find_partido(randint(1, 18))
        candidato.numero = int(str(partido.numero_partido) + numero_aleatorio(2))
        candidato.id_partido = partido.id_partido
        candidato.id_turno_cargo_regiao = id_tcr
        db.create(candidato)
        if i % 500 == 0:
            print(f'Commitando')
            db.commit()
            print(f'Commitado')
    print(f'Commitando')
    db.commit()
    print(f'Commitado')
コード例 #12
0
def cadastrar(candidato_json):
    candidato = mf.cria_candidato(candidato_json)
    validar_candidato(candidato)
    verifica_pessoa_ja_candidatada(candidato.id_pessoa,
                                   int(candidato_json['idEleicao']),
                                   candidato_json['pessoa']['nome'])
    if candidato.id_candidato is None:
        db.create(candidato)
    if 'viceCandidato' in candidato_json:
        vice = mf.cria_candidato(candidato_json['viceCandidato'])
        vice.id_turno_cargo_regiao = candidato.id_turno_cargo_regiao
        candidato.vice = vice
        validar_candidato(vice)
        verifica_pessoa_ja_candidatada(
            vice.id_pessoa, int(candidato_json['idEleicao']),
            candidato_json['viceCandidato']['pessoa']['nome'])
        if vice.id_candidato is None:
            db.create(vice)
    db.commit()
コード例 #13
0
def cadastrar_partido(dados):
    partido = mf.cria_partido(dados)
    validar_partido(partido)
    if partido.id_partido is None:
        db.create(partido)
    db.commit()