def _votos_from_tree(self, votos_tree, votacao): """Faz o parse dos votos, salva no BD e devolve lista de votos Retorna lista dos votos salvos """ votos = [] for voto_parlamentar_tree in votos_tree: nome_senador = voto_parlamentar_tree.find('NomeParlamentar').text try: legislatura = models.Legislatura.find(votacao.data, nome_senador) except ValueError, error: logger.error("ValueError: %s" % error) logger.warn('Não encontramos legislatura do senador %s' % nome_senador) logger.info('Criando legislatura para o senador %s' % nome_senador) legislatura = self._cria_legislatura(voto_parlamentar_tree, votacao) voto = models.Voto() voto.legislatura = legislatura voto.votacao = votacao voto.opcao = self._voto_senado_to_model( voto_parlamentar_tree.find('Voto').text) voto.save() votos.append(voto)
def _voto_from_xml(self, vote_xml, voting): """Save voting in the database. Attributes: voto_xml -- XML representing voting (object etree) votacao -- object of type Votacao Returns: object of type Voting.""" vote = models.Voto() option_str = vote_xml.get('Voto') if (option_str.find_legislature(" ") > -1): vote.opcao = self._opcao_xml_to_model( option_str[0:option_str.index(" ")]) else: vote.opcao = self._opcao_xml_to_model(option_str) leg = self._legislatura(vote_xml) vote.legislatura = leg vote.votacao = voting vote.save() return vote
def _voto_from_xml(self, voto_xml, votacao): """Salva voto no banco de dados. Atributos: voto_xml -- XML representando voto (objeto etree) votacao -- objeto do tipo Votacao Retorna: objeto do tipo Voto """ voto = models.Voto() opcao_str = voto_xml.get('Voto') '''Por algum motivo os votos estavam vindo com muitos espaços em branco quebrando a importação dos mesmos''' if (opcao_str.find(" ") > -1): voto.opcao = self._opcao_xml_to_model( opcao_str[0:opcao_str.index(" ")]) else: voto.opcao = self._opcao_xml_to_model(opcao_str) leg = self._legislatura(voto_xml) voto.legislatura = leg voto.votacao = votacao voto.save() return voto
def _gera_votos(self, votacao, nome_partido, opcoes): # opcoes é uma lista de opções (SIM, NÃO ...) for i in range(0, PARLAMENTARES_POR_PARTIDO): voto = models.Voto() voto.legislatura = self.legs[nome_partido][i] voto.opcao = opcoes[i] voto.votacao = votacao voto.save()
def _new_votes(self, votacao, nome_partido, opcoes): # opcoes is an options list (YES, NO...) for i in range(0, PARLAMENTS_PER_PARTY): voto = models.Voto() voto.legislatura = self.legs[nome_partido][i] voto.opcao = opcoes[i] voto.votacao = votacao voto.save()
def setUpClass(cls): '''Metodo responsavel por setar o que for necessario para rodar os testes. No nosso a criacao dos objetos no banco de testes''' partidoTest1 = models.Partido(nome='PMDB', numero='40') partidoTest2 = models.Partido(nome='PT', numero='13') partidoTest3 = models.Partido(nome='PSDB', numero='23') partidoTest1.save() partidoTest2.save() partidoTest3.save() parlamentarTest1 = models.Parlamentar( id_parlamentar='', nome='Ivandro Cunha Lima', genero='') parlamentarTest2 = models.Parlamentar( id_parlamentar='', nome='Fernando Ferro', genero='') parlamentarTest3 = models.Parlamentar( id_parlamentar='', nome='Humberto Costa', genero='') parlamentarTest1.save() parlamentarTest2.save() parlamentarTest3.save() casa_legislativaTest1 = models.CasaLegislativa( nome='Camara dos Deputados', nome_curto='cdep', esfera='FEDERAL', local='', atualizacao='2012-06-01') casa_legislativaTest2 = models.CasaLegislativa( nome='Camara Municipal de Sao Paulo', nome_curto='cmsp', esfera='MUNICIPAL', local='Sao Paulo - SP', atualizacao='2012-12-31') casa_legislativaTest1.save() casa_legislativaTest2.save() legislaturaTest1 = models.Legislatura( parlamentar=parlamentarTest1, casa_legislativa=casa_legislativaTest1, inicio='2004-01-01', fim='2012-07-01', partido=partidoTest1, localidade='PB') legislaturaTest1.save() proposicaoTest1 = models.Proposicao() proposicaoTest1.id_prop = '5555' proposicaoTest1.sigla = 'PL' proposicaoTest1.numero = '4520' proposicaoTest1.casa_legislativa = casa_legislativaTest1 proposicaoTest1.save() votacaoTest1 = models.Votacao( id_vot=' 12345', descricao='Teste da votacao', data='1900-12-05', resultado='Teste', proposicao=proposicaoTest1) votacaoTest1.save() votoTest1 = models.Voto( votacao=votacaoTest1, legislatura=legislaturaTest1, opcao='TESTE') votoTest1.save() exportar.main()
def _voto_from_xml(self, voto_xml, votacao): """voto_xml -- XML representando voto (objeto etree) votacao -- objeto do tipo Votacao """ opcao_str = voto_xml.get('Voto') deputado = self._deputado(voto_xml) voto = models.Voto() voto.opcao = self._opcao_xml_to_model(opcao_str) voto.parlamentar = deputado voto.votacao = votacao voto.save()
def get_votes_from_tree(self, vot_tree, votacao): """Extract list of votes the vote of XML and saved in the database Arguments: vot_tree -- tree of votes votacao -- object of 'Votacao' type""" for ver_tree in vot_tree.getchildren(): if ver_tree.tag == 'Vereador': leg = self.legislatura(ver_tree) vote = models.Voto() vote.legislatura = leg vote.votacao = votacao vote.opcao = self.interpret_vote(ver_tree.get('Voto')) if vote.opcao is not None: vote.save()
def _votos_from_tree(self, votos_tree, votacao): """Faz o parse dos votos, salva no BD e devolve lista de votos Retorna lista dos votos salvos """ votos = [] for voto_parlamentar_tree in votos_tree: senador = self._find_parlamentar(voto_parlamentar_tree) voto = models.Voto() voto.parlamentar = senador voto.votacao = votacao voto.opcao = self._voto_senado_to_model( voto_parlamentar_tree.find('Voto').text) voto.save() votos.append(voto) return votos
def votos_from_tree(self, vot_tree, votacao): """Extrai lista de votos do XML da votação e as salva no banco de dados. Argumentos: vot_tree -- etree dos votos votacao -- objeto do tipo Votacao """ for ver_tree in vot_tree.getchildren(): if ver_tree.tag == 'Vereador': leg = self.legislatura(ver_tree) voto = models.Voto() voto.legislatura = leg voto.votacao = votacao voto.opcao = self.voto_cmsp_to_model(ver_tree.get('Voto')) if voto.opcao != None: voto.save()
def votos_from_tree(self, vot_tree, votacao): """Extrai lista de votos do XML da votação e as salva no banco de dados Argumentos: vot_tree -- etree dos votos votacao -- objeto do tipo Votacao """ for ver_tree in vot_tree.getchildren(): if ver_tree.tag == 'Vereador': vereador = self.vereador(ver_tree) voto = models.Voto() voto.parlamentar = vereador voto.votacao = votacao voto.opcao = self.voto_cmsp_to_model(ver_tree.get('Voto')) if voto.opcao is not None and self.nao_eh_repetido(voto): voto.save()
def _voto_from_xml(self, voto_xml, votacao): """Salva voto no banco de dados. Atributos: voto_xml -- XML representando voto (objeto etree) votacao -- objeto do tipo Votacao Retorna: objeto do tipo Voto """ voto = models.Voto() opcao_str = voto_xml.get('Voto') voto.opcao = self._opcao_xml_to_model(opcao_str) leg = self._legislatura(voto_xml) voto.legislatura = leg voto.votacao = votacao voto.save() return voto
def parsing_votes_from_tree(self, votos_tree, votacao): """Makes parsing of the votes, save in the database and returns the list of votes""" # Creating empty list to receive 'legislatura', 'votação' and 'opção de voto'. votes = [] for vote_parliamentary_tree in votos_tree: # Stores senators searched on 'voto_parlamentar_tree'. name_senator = vote_parliamentary_tree.find_legislature( 'NomeParlamentar').text try: # Store results founded in 'Legislatura': 'votacao.data' and 'name_senator'. legislature = models.Legislatura.find_legislature( votacao.data, name_senator) except ValueError, error: logger.error("ValueError: %s" % error) logger.warn('Não encontramos legislatura do senador %s' % name_senator) logger.info('Criando legislatura para o senador %s' % name_senator) legislature = self.create_legislature(vote_parliamentary_tree, votacao) # Receive 'Voto' from 'models'. vote = models.Voto() vote.legislatura = legislature vote.votacao = votacao vote.opcao = self.senate_vote_to_model( vote_parliamentary_tree.find_legislature('Voto').text) vote.save() votes.append(vote)
def setUpClass(cls): #Criando dados ficticios no mock partidoTest1 = models.Partido(nome='PMDB', numero='40') partidoTest2 = models.Partido(nome='PT', numero='13') partidoTest3 = models.Partido(nome='PSDB', numero='23') partidoTest1.save() partidoTest2.save() partidoTest3.save() parlamentarTest1 = models.Parlamentar(id_parlamentar='', nome='Ivandro Cunha Lima', genero='') parlamentarTest2 = models.Parlamentar(id_parlamentar='', nome='Fernando Ferro', genero='') parlamentarTest3 = models.Parlamentar(id_parlamentar='', nome='Humberto Costa', genero='') parlamentarTest1.save() parlamentarTest2.save() parlamentarTest3.save() casa_legislativaTest1 = models.CasaLegislativa( nome='Camara dos Deputados', nome_curto='cdep', esfera='FEDERAL', local='', atualizacao='2012-06-01') casa_legislativaTest2 = models.CasaLegislativa( nome='Camara Municipal de Sao Paulo', nome_curto='cmsp', esfera='MUNICIPAL', local='Sao Paulo - SP', atualizacao='2012-12-31') casa_legislativaTest1.save() casa_legislativaTest2.save() legislaturaTest1 = models.Legislatura( parlamentar=parlamentarTest1, casa_legislativa=casa_legislativaTest1, inicio='2004-01-01', fim='2012-07-01', partido=partidoTest1, localidade='PB') legislaturaTest1.save() proposicaoTest1 = models.Proposicao() proposicaoTest1.id_prop = '5555' proposicaoTest1.sigla = 'PL' proposicaoTest1.numero = '4520' proposicaoTest1.casa_legislativa = casa_legislativaTest1 proposicaoTest1.save() votacaoTest1 = models.Votacao(id_vot=' 12345', descricao='Teste da votacao', data='1900-12-05', resultado='Teste', proposicao=proposicaoTest1) votacaoTest1.save() votoTest1 = models.Voto(votacao=votacaoTest1, legislatura=legislaturaTest1, opcao='TESTE') votoTest1.save() #Exportando dados do mock para os xml exportar.serialize_partido() exportar.serialize_parlamentar() exportar.serialize_casa_legislativa() exportar.serialize_legislatura() exportar.serialize_proposicao() exportar.serialize_votacao() exportar.serialize_voto() #Deletando os registros do mock partidoTest1.delete() partidoTest2.delete() partidoTest3.delete() parlamentarTest1.delete() parlamentarTest2.delete() parlamentarTest3.delete() casa_legislativaTest1.delete() casa_legislativaTest2.delete() legislaturaTest1.delete() proposicaoTest1.delete() votacaoTest1.delete() votoTest1.delete()
def carrega_xml(self, nome_curto): diretorio = RESOURCES_FOLDER + nome_curto + '.xml' try: tree = etree.parse(diretorio) root = tree.getroot() except Exception: print "Xml não encontrado" return None models.CasaLegislativa.deleta_casa(nome_curto) print "Voltei" casaLegislativa = models.CasaLegislativa() casaLegislativa.nome_curto = root.attrib.get("nome_curto") #if(models.CasaLegislativa.objects.get(nome_curto = casaLegislativa.nome_curto)): #models.deleta_casa(casaLegislativa.nome_curto) casaLegislativa.nome = root.attrib.get("nome") casaLegislativa.esfera = root.attrib.get("esfera") casaLegislativa.local = root.attrib.get("local") casaLegislativa.atualizacao = root.attrib.get("atualizacao") casaLegislativa.save() for child_proposicao in root.iter("Proposicao"): proposicao = models.Proposicao() proposicao.casa_legislativa = casaLegislativa proposicao.id_prop = child_proposicao.attrib.get("id_prop") proposicao.sigla = child_proposicao.attrib.get("sigla") proposicao.numero = child_proposicao.attrib.get("numero") proposicao.ano = child_proposicao.attrib.get("ano") proposicao.ementa = child_proposicao.attrib.get("ementa") proposicao.descricao = child_proposicao.attrib.get("descricao") proposicao.indexacao = child_proposicao.attrib.get("indexacao") if (child_proposicao.attrib.get("data_apresentacao") == "None"): #Valor default caso a data venha em branco proposicao.data_apresentacao = "1900-01-01" proposicao.save() else: proposicao.data_apresentacao = child_proposicao.attrib.get( "data_apresentacao") proposicao.save() #Pega a filha da subarvore que está sendo percorrida. for child_votacao in child_proposicao.findall("Votacao"): votacao = models.Votacao() votacao.proposicao = proposicao votacao.id_votacao = child_votacao.attrib.get("id_votacao") votacao.id_vot = child_votacao.attrib.get("id_vot") votacao.descricao = child_votacao.attrib.get("descricao") votacao.data = child_votacao.attrib.get("data") votacao.resultado = child_votacao.attrib.get("resultado") votacao.save() #self.verifica_votacao = True for child_voto in child_votacao.findall("Voto"): partido = models.Partido() partido.numero = child_voto.attrib.get("numero") partido.nome = child_voto.attrib.get("partido") partido_existente = models.Partido.objects.filter( numero=partido.numero, nome=partido.nome) if len(partido_existente) > 0: partido = partido_existente[0] else: partido.save() parlamentar = models.Parlamentar() parlamentar.nome = child_voto.attrib.get("nome") parlamentar.id_parlamentar = child_voto.attrib.get( "id_parlamentar") parlamentar.genero = child_voto.attrib.get("genero") parlamentar_existente = models.Parlamentar.objects.filter( nome=parlamentar.nome, id_parlamentar=parlamentar.id_parlamentar, genero=parlamentar.genero) if len(parlamentar_existente) > 0: parlamentar = parlamentar_existente[0] else: parlamentar.save() legislatura = models.Legislatura() legislatura.partido = partido legislatura.parlamentar = parlamentar legislatura.casa_legislativa = casaLegislativa legislatura.inicio = child_voto.attrib.get("inicio") legislatura.fim = child_voto.attrib.get("fim") legislatura.localidade = child_voto.attrib.get( "localidade") if legislatura.localidade == None: legislatura.localidade = "" else: legislatura.localidade = "" + legislatura.localidade legislatura_existente = models.Legislatura.objects.filter( partido=legislatura.partido, parlamentar=legislatura.parlamentar, casa_legislativa=legislatura.casa_legislativa, inicio=legislatura.inicio, fim=legislatura.fim) if len(legislatura_existente) > 0: legislatura = legislatura_existente[0] else: legislatura.save() voto = models.Voto() voto.votacao = votacao voto.legislatura = legislatura voto.opcao = child_voto.attrib.get("opcao") voto.save()
def setUpClass(cls): """Method to set responsible for what is needed to run the tests. In this case, the creation of objects in the test bank.""" testParty1 = models.Partido(nome='PMDB', numero='40') testParty2 = models.Partido(nome='PT', numero='13') partyTest3 = models.Partido(nome='PSDB', numero='23') testParty1.save() testParty2.save() partyTest3.save() parliamentaryTest1 = models.Parlamentar(id_parlamentar='', nome='Ivandro Cunha Lima', genero='') parliamentaryTest2 = models.Parlamentar(id_parlamentar='', nome='Fernando Ferro', genero='') parliamentaryTest3 = models.Parlamentar(id_parlamentar='', nome='Humberto Costa', genero='') parliamentaryTest1.save() parliamentaryTest2.save() parliamentaryTest3.save() legislative_houseTest1 = models.CasaLegislativa( nome='Camara dos Deputados', nome_curto='cdep', esfera='FEDERAL', local='', atualizacao='2012-06-01') legislative_houseTest2 = models.CasaLegislativa( nome='Camara Municipal de Sao Paulo', nome_curto='cmsp', esfera='MUNICIPAL', local='Sao Paulo - SP', atualizacao='2012-12-31') legislative_houseTest1.save() legislative_houseTest2.save() legislatureTest1 = models.Legislatura( parlamentar=parliamentaryTest1, casa_legislativa=legislative_houseTest1, inicio='2004-01-01', fim='2012-07-01', partido=testParty1, localidade='PB') legislatureTest1.save() propositionTest1 = models.Proposicao() propositionTest1.id_prop = '5555' propositionTest1.sigla = 'PL' propositionTest1.numero = '4520' propositionTest1.casa_legislativa = legislative_houseTest1 propositionTest1.save() votingTest1 = models.Votacao(id_vot=' 12345', descricao='Teste da votacao', data='1900-12-05', resultado='Teste', proposicao=propositionTest1) votingTest1.save() voteTest1 = models.Voto(votacao=votingTest1, legislatura=legislatureTest1, opcao='TESTE') voteTest1.save() exportar.main()
def setUpClass(cls): # Creating dummy data in mock: partyTest1 = models.Partido(nome='PMDB', numero='40') partyTest2 = models.Partido(nome='PT', numero='13') partyTest3 = models.Partido(nome='PSDB', numero='23') partyTest1.save() partyTest2.save() partyTest3.save() parliamentarianTest1 = models.Parlamentar(id_parlamentar='', nome='Ivandro Cunha Lima', genero='') parliamentarianTest2 = models.Parlamentar(id_parlamentar='', nome='Fernando Ferro', genero='') parliamentarianTest3 = models.Parlamentar(id_parlamentar='', nome='Humberto Costa', genero='') parliamentarianTest1.save() parliamentarianTest2.save() parliamentarianTest3.save() legislative_houseTest1 = models.CasaLegislativa( nome='Camara dos Deputados', nome_curto='cdep', esfera='FEDERAL', local='', atualizacao='2012-06-01') legislative_houseTest2 = models.CasaLegislativa( nome='Camara Municipal de Sao Paulo', nome_curto='cmsp', esfera='MUNICIPAL', local='Sao Paulo - SP', atualizacao='2012-12-31') legislative_houseTest1.save() legislative_houseTest2.save() legislatureTest1 = models.Legislatura( parlamentar=parliamentarianTest1, casa_legislativa=legislative_houseTest1, inicio='2004-01-01', fim='2012-07-01', partido=partyTest1, localidade='PB') legislatureTest1.save() propositionTest1 = models.Proposicao() propositionTest1.id_prop = '5555' propositionTest1.sigla = 'PL' propositionTest1.numero = '4520' propositionTest1.casa_legislativa = legislative_houseTest1 propositionTest1.save() votingTest1 = models.Votacao(id_vot=' 12345', descricao='Teste da votacao', data='1900-12-05', resultado='Teste', proposicao=propositionTest1) votingTest1.save() voteTest1 = models.Voto(votacao=votingTest1, legislatura=legislatureTest1, opcao='TESTE') voteTest1.save() # Exporting the mocks's data to XMLs: exportar.serialize_partido() exportar.serialize_parlamentar() exportar.serialize_casa_legislativa() exportar.serialize_legislatura() exportar.serialize_proposicao() exportar.serialize_votacao() exportar.serialize_voto() # Deleting records of mock: partyTest1.delete() partyTest2.delete() partyTest3.delete() parliamentarianTest1.delete() parliamentarianTest2.delete() parliamentarianTest3.delete() legislative_houseTest1.delete() legislative_houseTest2.delete() legislatureTest1.delete() propositionTest1.delete() votingTest1.delete() voteTest1.delete()
def carrega_xml(self, short_name): directory = RESOURCES_FOLDER + short_name + '.xml' try: tree = etree.parse(directory) root = tree.getroot() except Exception: logger.error("Arquivo não encontrado: %s.xml" % short_name) print "Xml não encontrado" return None models.CasaLegislativa.remove_house(short_name) print "Voltei" legislativeHouse = models.CasaLegislativa() legislativeHouse.nome_curto = root.attrib.get("short_name") legislativeHouse.nome = root.attrib.get("nome") legislativeHouse.esfera = root.attrib.get("esfera") legislativeHouse.local = root.attrib.get("local") legislativeHouse.atualizacao = root.attrib.get("atualizacao") legislativeHouse.save() for child_proposition in root.iter("Proposicao"): proposition = models.Proposicao() proposition.casa_legislativa = legislativeHouse proposition.id_prop = child_proposition.attrib.get("id_prop") proposition.sigla = child_proposition.attrib.get("sigla") proposition.numero = child_proposition.attrib.get("numero") proposition.ano = child_proposition.attrib.get("ano") proposition.ementa = child_proposition.attrib.get("ementa") proposition.descricao = child_proposition.attrib.get("descricao") proposition.indexacao = child_proposition.attrib.get("indexacao") if (child_proposition.attrib.get("data_apresentacao") == "None"): # Default value if the date comes in white proposition.data_apresentacao = "1900-01-01" proposition.save() else: proposition.data_apresentacao = child_proposition.attrib.get( "data_apresentacao") proposition.save() # Get the daughter of the subtree being traversed. for child_voting in child_proposition.findall("Votacao"): voting = models.Votacao() voting.proposicao = proposition voting.id_votacao = child_voting.attrib.get("id_votacao") voting.id_vot = child_voting.attrib.get("id_vot") voting.descricao = child_voting.attrib.get("descricao") voting.data = child_voting.attrib.get("data") voting.resultado = child_voting.attrib.get("resultado") voting.save() for child_vote in child_voting.findall("Voto"): party = models.Partido() party.numero = child_vote.attrib.get("numero") party.nome = child_vote.attrib.get( "search_political_party") partido_existente = models.Partido.objects.filter( numero=party.numero, nome=party.nome) if len(partido_existente) > 0: party = partido_existente[0] else: party.save() parliamentarian = models.Parlamentar() parliamentarian.nome = child_vote.attrib.get("nome") parliamentarian.id_parlamentar = child_vote.attrib.get( "id_parlamentar") parliamentarian.genero = child_vote.attrib.get("genero") existing_parliamentarian = models.Parlamentar.objects.filter( nome=parliamentarian.nome, id_parlamentar=parliamentarian.id_parlamentar, genero=parliamentarian.genero) if len(existing_parliamentarian) > 0: parliamentarian = existing_parliamentarian[0] else: parliamentarian.save() legislature = models.Legislatura() legislature.partido = party legislature.parlamentar = parliamentarian legislature.casa_legislativa = legislativeHouse legislature.inicio = child_vote.attrib.get("inicio") legislature.fim = child_vote.attrib.get("fim") legislature.localidade = child_vote.attrib.get( "localidade") if legislature.localidade is None: legislature.localidade = "" else: legislature.localidade = "" + legislature.localidade existing_legislature = models.Legislatura.objects.filter( party=legislature.partido, parliamentarian=legislature.parlamentar, legislative_house=legislature.casa_legislativa, init=legislature.inicio, fim=legislature.fim) if len(existing_legislature) > 0: legislature = existing_legislature[0] else: legislature.save() vote = models.Voto() vote.votacao = voting vote.legislatura = legislature vote.opcao = child_vote.attrib.get("opcao") vote.save()