Example #1
0
    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
Example #2
0
    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
Example #3
0
    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
Example #4
0
    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
Example #5
0
 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
Example #6
0
    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
Example #7
0
    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)
Example #9
0
File: cmsp.py Project: Attany/radar
    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)
Example #10
0
 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)
Example #12
0
    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
Example #17
0
    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()
Example #18
0
    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()