Пример #1
0
def busca_partido(nome):
    nome = nome.replace('+', '%')
    try:
        nome = int(nome)
        partidos = db.query(Partido).filter(Partido.numero_partido == int(nome)).all()
    except ValueError:
        partidos = db.query(Partido).filter(or_(Partido.nome.ilike(f'%{nome}%'),
                                                Partido.sigla.ilike(f'%{nome}%'))).all()
    if not partidos:
        return []
    return [p.to_json() for p in partidos]
Пример #2
0
def consulta_candidato(tcr, numero):
    candidato = db.query(Candidato)\
                  .filter(Candidato.id_turno_cargo_regiao == tcr)\
                  .filter(Candidato.id_candidato_principal == None) \
                  .filter(Candidato.numero == numero)\
                  .first()

    if candidato is None:
        partido = db.query(Partido).filter(
            Partido.numero_partido == numero).first()
        if partido is None:
            return None
        retorno = monta_partido(tcr, partido)
    else:
        retorno = monta_candidato(candidato)
    return retorno
Пример #3
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} ========================================================='
    )
Пример #4
0
def monta_partido(tcr, partido):
    candidatos = db.query(Candidato) \
                   .filter(Candidato.id_turno_cargo_regiao == tcr) \
                   .filter(Candidato.id_partido == partido.id_partido) \
                   .all()
    if not candidatos:
        return None
    return {'idPartido': partido.id_partido, 'nome': partido.nome}
Пример #5
0
def verifica_pessoa_ja_candidatada(id_pessoa, id_eleicao, nome):
    eleicoes = db.query(Candidato)\
                 .join(Candidato.turnoCargoRegiao)\
                 .join(TurnoCargoRegiao.turnoCargo)\
                 .join(TurnoCargo.turno)\
                 .filter(Candidato.id_pessoa == id_pessoa)\
                 .filter(Turno.id_eleicao == id_eleicao)\
                 .all()
    if eleicoes:
        raise ValidationException(f'{nome} já se candidatou nesta eleição',
                                  [f'{nome} já se candidatou nesta eleição'])
Пример #6
0
def setar_candidatos_eleitos_representacao_proporcional(id_tcr, partidos):
    for partido in partidos:
        candidatos = db.query(Candidato)\
                       .filter(Candidato.id_turno_cargo_regiao == id_tcr)\
                       .filter(Candidato.id_partido == partido.id_partido)\
                       .order_by(desc(Candidato.qt_votos))\
                       .limit(partido.cadeiras)\
                       .all()

        for candidato in candidatos:
            candidato.situacao = 'Eleito'
    db.commit()
Пример #7
0
def consulta_cidade(id_estado, nome):
    nome = nome.replace('+', '%')
    cidades = db.query(Cidade).filter(Cidade.id_estado == id_estado,
                                      Cidade.nome.ilike(f'%{nome}%')).all()
    return [c.to_json() for c in cidades]
Пример #8
0
def consulta_estado(nome):
    nome = nome.replace('+', '%')
    estados = db.query(Estado).filter(Estado.nome.ilike(f'%{nome}%')).all()
    return [e.to_json() for e in estados]
Пример #9
0
def cria_votos(id_eleitores, id_turno):
    for id_eleitor in id_eleitores:
        hash_voto = ''
        print(f'Voto de {id_eleitor}')
        cands = [-1, 23, 25, 27, 29]
        shuffle(cands)

        if cands[0] != -1:
            cand = db.query(Candidato).get(cands[0])
            id_candidato = c.enc(cand.id_candidato)
            id_partido = c.enc(cand.id_partido)
        else:
            id_candidato = c.enc(-1)
            id_partido = c.enc(-1)
        id_eleitor_enc = c.enc(id_eleitor)
        id_turno_cargo_regiao = 9
        id_cidade = 1

        hash_voto += str(id_candidato)

        sql = 'INSERT INTO voto_encriptado(id_turno_cargo_regiao, id_cidade, id_candidato, id_partido, id_eleitor)' \
              'VALUES(:idTurnoCargoRegiao, :idCidade, :idCandidato, :idPartido, :idEleitor)'

        db.native(sql, {'idTurnoCargoRegiao': id_turno_cargo_regiao,
                        'idCidade': id_cidade,
                        'idCandidato': id_candidato,
                        'idPartido': id_partido,
                        'idEleitor': id_eleitor_enc})

        cands = [-1, 31, 33, 35]
        shuffle(cands)
        if cands[0] != -1:
            cand = db.query(Candidato).get(cands[0])
            id_candidato = c.enc(cand.id_candidato)
            id_partido = c.enc(cand.id_partido)
        else:
            id_candidato = c.enc(-1)
            id_partido = c.enc(-1)
        id_turno_cargo_regiao = 10
        id_cidade = 1

        hash_voto += str(id_candidato)

        sql = 'INSERT INTO voto_encriptado(id_turno_cargo_regiao, id_cidade, id_candidato, id_partido, id_eleitor)' \
              'VALUES(:idTurnoCargoRegiao, :idCidade, :idCandidato, :idPartido, :idEleitor)'

        db.native(sql, {'idTurnoCargoRegiao': id_turno_cargo_regiao,
                        'idCidade': id_cidade,
                        'idCandidato': id_candidato,
                        'idPartido': id_partido,
                        'idEleitor': id_eleitor_enc})

        cand = randint(43, 142)
        cand = cand if bool(randint(0, 1)) else -1
        if cand != -1:
            cand = db.query(Candidato).get(cand)
            id_candidato = c.enc(cand.id_candidato)
            id_partido = c.enc(cand.id_partido)
        else:
            id_candidato = c.enc(-1)
            id_partido = c.enc(-1)
        id_turno_cargo_regiao = 12
        id_cidade = 1

        hash_voto += str(id_candidato)

        sql = 'INSERT INTO voto_encriptado(id_turno_cargo_regiao, id_cidade, id_candidato, id_partido, id_eleitor)' \
              'VALUES(:idTurnoCargoRegiao, :idCidade, :idCandidato, :idPartido, :idEleitor)'

        db.native(sql, {'idTurnoCargoRegiao': id_turno_cargo_regiao,
                        'idCidade': id_cidade,
                        'idCandidato': id_candidato,
                        'idPartido': id_partido,
                        'idEleitor': id_eleitor_enc})

        insert_eleitor_turno(id_eleitor, id_turno, senha_util.encrypt_md5(hash_voto))
        db.commit()
Пример #10
0
def buscar_partidos(id_coligacao):
    partidos = db.query(Partido).join(Partido.coligacoes).filter(Coligacao.id_coligacao == id_coligacao).all()
    if not partidos:
        return []
    return [p.to_json() for p in partidos]
Пример #11
0
def buscar_coligacoes(id_eleicao):
    coligacoes = db.query(Coligacao).filter(Coligacao.id_eleicao == id_eleicao).all()
    if not coligacoes:
        return []
    return [c.to_json() for c in coligacoes]