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]
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
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} =========================================================' )
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}
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'])
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()
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]
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]
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()
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]
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]