def _votacao_from_xml(self, voting_xml, proposition): description = 'Resumo: [%s]. ObjVotacao: [%s]' % ( voting_xml.get('Resumo'), voting_xml.get('ObjVotacao')) date_str = voting_xml.get('Data').strip() hour_str = voting_xml.get('Hora').strip() date_time = self._converte_data(date_str, hour_str) query = models.Votacao.objects.filter( descricao=description, data=date_time, proposicao__casa_legislativa=self.camara_dos_deputados) if query: voting = query[0] else: logger.info('Importando votação ocorrida em %s' % date_str) voting = models.Votacao() voting.descricao = description voting.data = date_time voting.proposicao = proposition voting.save() if voting_xml.find_legislature('votos'): for vote_xml in voting_xml.find_legislature('votos'): self._voto_from_xml(vote_xml, voting) voting.save() return voting
def _votacao_from_xml(self, votacao_xml, prop): """Salva votação no banco de dados. Atributos: votacao_xml -- XML representando votação (objeto etree) prop -- objeto do tipo Proposicao Retorna: objeto do tipo Votacao """ descricao = 'Resumo: [%s]. ObjVotacao: [%s]' % ( votacao_xml.get('Resumo'), votacao_xml.get('ObjVotacao')) data_str = votacao_xml.get('Data').strip() hora_str = votacao_xml.get('Hora').strip() date_time = self._converte_data(data_str, hora_str) query = models.Votacao.objects.filter( descricao=descricao, data=date_time, proposicao__casa_legislativa=self.camara_dos_deputados) if query: votacao = query[0] else: logger.info('Importando votação ocorrida em %s' % data_str) votacao = models.Votacao() votacao.descricao = descricao votacao.data = date_time votacao.proposicao = prop votacao.save() if votacao_xml.find('votos') is not None: for voto_xml in votacao_xml.find('votos'): self._voto_from_xml(voto_xml, votacao) votacao.save() return votacao
def _from_xml_to_bd(self, xml_file): """Salva no banco de dados do Django e retorna lista das votações""" f = open(xml_file, 'r') xml = f.read() f.close() tree = etree.fromstring(xml) votacoes = [] # Pelo q vimos, nesses XMLs não há votações 'inúteis' (homenagens etc) # como na cmsp (exceto as secretas) votacoes_tree = tree.find('Votacoes') if votacoes_tree is not None: for votacao_tree in votacoes_tree: # se votação não é secreta votacao_secreta = votacao_tree.find('Secreta').text if votacao_tree.tag == 'Votacao' and votacao_secreta == 'N': codigo = votacao_tree.find('CodigoSessaoVotacao').text votacoes_query = models.Votacao.objects.filter( id_vot=codigo) if votacoes_query: votacao = votacoes_query[0] votacoes.append(votacao) else: proposicao = self._proposicao_from_tree(votacao_tree) nome = '%s %s/%s' % ( proposicao.sigla, proposicao.numero, proposicao.ano) logger.debug('Importando %s' % nome) votacao = models.Votacao() votacao.id_vot = codigo # só pra criar a chave primária e poder atribuir o # votos votacao.save() votacao.descricao = votacao_tree.find( 'DescricaoVotacao').text votacao.data = self._converte_data( votacao_tree.find('DataSessao').text) if votacao_tree.find('Resultado') is not None: votacao.resultado = votacao_tree.find( 'Resultado').text votacao.proposicao = proposicao votos_tree = votacao_tree.find('Votos') if votos_tree is not None: votos = self._votos_from_tree(votos_tree, votacao) if not votos: logger.warn( 'Votação desconsiderada (sem votos)') votacao.delete() else: votacao.save() votacoes.append(votacao) else: logger.warn( 'Votação desconsiderada (votos_tree nulo)') votacao.delete() return votacoes
def _from_xml_to_bd(self, xml_file): """Salva no banco de dados do Django e retorna lista das votações""" f = open(xml_file, 'r') xml = f.read() f.close() tree = etree.fromstring(xml) proposicoes = { } # chave é string (ex: 'pl 127/2004'); valor é objeto do tipo Proposicao votacoes = [] for vot_tree in tree.getchildren(): if vot_tree.tag == 'Votacao' and vot_tree.get( 'TipoVotacao') == 'Nominal': # se é votação nominal resumo = '%s -- %s' % (vot_tree.get('Materia'), vot_tree.get('Ementa')) # Prop_nome eh como se identificam internamente por ora as propostas. # Queremos saber a que proposicao estah associada a votacao analisanda. prop_nome = self._prop_nome( resumo ) # vai retornar prop_nome se votação for de proposição # se a votacao for associavel a uma proposicao, entao.. if (prop_nome): # a proposicao aa qual a votacao sob analise se refere jah estava no dicionario (eba!) if proposicoes.has_key(prop_nome): prop = proposicoes[prop_nome] # a prop. nao estava ainda, entao devemo-la tanto criar qnt cadastrar no dicionario. else: prop = models.Proposicao() prop.sigla, prop.numero, prop.ano = self.tipo_num_anoDePropNome( prop_nome) prop.casa_legislativa = self.cmsp proposicoes[prop_nome] = prop if self.verbose: print 'Proposição %s salva' % prop prop.save() vot = models.Votacao() vot.save( ) # só pra criar a chave primária e poder atribuir o votos vot.id_vot = vot_tree.get('VotacaoID') vot.descricao = resumo vot.data = self._converte_data( vot_tree.get('DataDaSessao')) vot.resultado = vot_tree.get('Resultado') self._votos_from_tree(vot_tree, vot) vot.proposicao = prop if self.verbose: print 'Votação %s salva' % vot else: self.progresso() vot.save() votacoes.append(vot) return votacoes
def _gera_votacao(self, num, descricao, data, prop): votacao = models.Votacao() votacao.id_vot = num votacao.descricao = descricao votacao.data = data votacao.proposicao = prop votacao.save() return votacao
def _creating_votacao(self, votacao_tree): proposicao = self._proposicao_from_tree(votacao_tree) self.progresso() votacao = models.Votacao() votacao.id_vot = self._find_the_votacao_code(votacao_tree) # save só pra criar a chave primária e poder atribuir os votos votacao.save() return votacao
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 get_votings_from_tree(self, proposicoes, votacoes, vot_tree): # If the votation is nominal, vot_tree gets the subject and the menu # Gets the type of voting from 'vot_tree'. type_of_votating = vot_tree.get('TipoVotacao') if vot_tree.tag == 'Votacao' and type_of_votating == 'Nominal': # Receive 'Materia' and 'Ementa' from 'vot_tree'. abstract = '%s -- %s' % (vot_tree.get('Materia'), vot_tree.get('Ementa')) # Prop_nome is as internally identifies the proposals # We want to know which proposition the analyzed voting is associated # Will return if search_propostition_by_name vote for Proposition proposition_name = self.search_propostition_by_name(abstract) # If the voting was associable to a proposition, so.. if (proposition_name): id_vote = vot_tree.get('VotacaoID') voting_blank = models.Votacao.objects.filter(id_vot=id_vote) if voting_blank: vot = voting_blank[0] else: if proposition_name in proposicoes: proposition = proposicoes[proposition_name] # The propositon was not in dictionary yet, so we have to create and # register it on dictionary else: proposition = models.Proposicao() proposition.sigla, proposition.numero, proposition.ano = self.extract_year_from_num_and_year( proposition_name) proposition.casa_legislativa = self.cmsp proposicoes[proposition_name] = proposition if self.verbose: print 'Proposicao %s salva' % proposition proposition.save() vot = models.Votacao() # To create de primary key and assign the votes vot.save() vot.id_vot = id_vote vot.descricao = abstract vot.data = self.convert_data(vot_tree.get('DataDaSessao')) vot.resultado = vot_tree.get('Resultado') self.get_votes_from_tree(vot_tree, vot) vot.proposicao = proposition if self.verbose: print 'Votacao %s salva' % vot else: self.show_progress() vot.save() votacoes.append(vot)
def votacao_from_tree(self, proposicoes, votacoes, vot_tree): # se é votação nominal votacao_TipoVotacao = vot_tree.get('TipoVotacao') if vot_tree.tag == 'Votacao' and votacao_TipoVotacao == 'Nominal': # Prop_nome eh como se identifica internamente as propostas. # Queremos saber a que proposicao estah associada a votacao # analisanda. # vai retornar prop_nome se votação for de proposição prop_nome = self.prop_nome(vot_tree.get('Materia')) # se a votacao for associavel a uma proposicao, entao.. if prop_nome: id_vot = vot_tree.get('VotacaoID') votacoes_em_banco = models.Votacao.objects.filter( proposicao__casa_legislativa__nome_curto='cmsp', id_vot=id_vot) if votacoes_em_banco: vot = votacoes_em_banco[0] else: # a proposicao a qual a votacao sob analise se refere jah # estava no dicionario (eba!) if prop_nome in proposicoes: prop = proposicoes[prop_nome] # a prop. nao estava ainda, entao devemo-la tanto criar # qnt cadastrar no dicionario. else: prop = models.Proposicao() prop.sigla, prop.numero, prop.ano = self. \ tipo_num_anoDePropNome(prop_nome) prop.ementa = vot_tree.get('Ementa') prop.casa_legislativa = self.cmsp proposicoes[prop_nome] = prop if self.verbose: logger.info('Proposicao %s salva' % prop) prop.save() vot = models.Votacao() # só pra criar a chave primária e poder atribuir o votos vot.save() vot.id_vot = id_vot vot.descricao = vot_tree.get('Materia') + ' - ' + vot_tree.get('NotasRodape') vot.data = self.data_da_sessao vot.resultado = vot_tree.get('Resultado') self.votos_from_tree(vot_tree, vot) vot.proposicao = prop if self.verbose: logger.info('Votacao %s salva' % vot) else: self.progresso() vot.save() votacoes.append(vot)
def create_voting(self,prop,vot_tree,id_vot): votacao = models.Votacao() # só pra criar a chave primária e poder atribuir o votos votacao.save() votacao.id_vot = id_vot votacao.descricao = vot_tree.get('Materia') + ' - ' + vot_tree.get('NotasRodape') votacao.data = self.data_da_sessao votacao.resultado = vot_tree.get('Resultado') self.votos_from_tree(vot_tree, votacao) votacao.proposicao = prop if self.verbose: logger.info('Votacao %s salva' % votacao) else: self.progresso() return votacao
def votacao_from_tree(self, proposicoes, votacoes, vot_tree): if vot_tree.tag == 'Votacao' and vot_tree.get( 'TipoVotacao') == 'Nominal': # se é votação nominal resumo = '%s -- %s' % (vot_tree.get('Materia'), vot_tree.get('Ementa')) # Prop_nome eh como se identificam internamente por ora as propostas. # Queremos saber a que proposicao estah associada a votacao analisanda. prop_nome = self.prop_nome( resumo) # vai retornar prop_nome se votação for de proposição # se a votacao for associavel a uma proposicao, entao.. if (prop_nome): # a proposicao a qual a votacao sob analise se refere jah estava no dicionario (eba!) if proposicoes.has_key(prop_nome): prop = proposicoes[prop_nome] # a prop. nao estava ainda, entao devemo-la tanto criar qnt cadastrar no dicionario. else: prop = models.Proposicao() prop.sigla, prop.numero, prop.ano = self.tipo_num_anoDePropNome( prop_nome) prop.casa_legislativa = self.cmsp proposicoes[prop_nome] = prop if self.verbose: print 'Proposicao %s salva' % prop prop.save() vot = models.Votacao() vot.save( ) # só pra criar a chave primária e poder atribuir o votos vot.id_vot = vot_tree.get('VotacaoID') vot.descricao = resumo vot.data = self.converte_data(vot_tree.get('DataDaSessao')) vot.resultado = vot_tree.get('Resultado') self.votos_from_tree(vot_tree, vot) vot.proposicao = prop if self.verbose: print 'Votacao %s salva' % vot else: self.progresso() vot.save() votacoes.append(vot)
def _votacao_from_xml(self, votacao_xml, prop): """votacao_xml -- XML representando votação (objeto etree) prop -- objeto do tipo Proposicao """ descricao = 'Resumo: [%s]. ObjVotacao: [%s]' % ( votacao_xml.get('Resumo'), votacao_xml.get('ObjVotacao')) data_str = votacao_xml.get('Data').strip() data = _converte_data(data_str) key = (prop.id_prop, descricao, data) if key not in self.votacoes: votacao = models.Votacao() votacao.proposicao = prop votacao.descricao = descricao votacao.data = data votacao.save() self.votacoes[key] = votacao if votacao_xml.find('votos') is not None: for voto_xml in votacao_xml.find('votos'): self._voto_from_xml(voto_xml, votacao) votacao.save()
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()
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, 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 save_in_database(self, xml_file): """Save in the database and returns the Django voting list""" f = open(xml_file, 'r') xml = f.read() f.close() tree = etree.fromstring(xml) # Empty list to receive data. votings = [] votacoes_tree = tree.find_legislature('Votacoes') if votacoes_tree is not None: for votacao_tree in votacoes_tree: # Get secret voting from 'votacao_tree'. secret_voting = votacao_tree.find_legislature('Secreta').text # If voting is not secret: if votacao_tree.tag == 'Votacao' and secret_voting == 'N': # Receive 'CodigoSessaoVotacao' from 'votacao_tree'. code_section_voting = votacao_tree.find_legislature( 'CodigoSessaoVotacao').text # Receive filtered result. votings_query = models.Votacao.objects.filter( id_vot=code_section_voting) if votings_query: votes = votings_query[0] votings.append(votes) else: proposition_from_tree = self.get_proposition_from_tree( votacao_tree) # Store final name composition of proposition. proposition_name = '%s %s/%s' % ( proposition_from_tree.sigla, proposition_from_tree.numero, proposition_from_tree.ano) logger.debug('Importando %s' % proposition_name) votes = models.Votacao() votes.id_vot = code_section_voting # To create the primary key and assign the votes. votes.save() # Receive search results of 'DescricaoVotacao'. votes.descricao = votacao_tree.find_legislature( 'DescricaoVotacao').text votes.data = self.converte_data( votacao_tree.find_legislature('DataSessao').text) if votacao_tree.find_legislature( 'Resultado') is not None: votes.resultado = votacao_tree.find_legislature( 'Resultado').text votes.proposicao = proposition_from_tree # Store search results of 'Votos'. votos_tree = votacao_tree.find_legislature('Votos') if votos_tree is not None: votes = self.parsing_votes_from_tree( votos_tree, votes) if not votes: logger.warn( 'Votação desconsiderada (sem votos)') votes.delete() else: votes.save() votings.append(votes) else: logger.warn('Votação desconsiderada (voto nulo)') votes.delete() return votings
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 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()