diff --git a/radar_parlamentar/importadores/conv.py b/radar_parlamentar/importadores/conv.py index 2970c513..e6b53c87 100644 --- a/radar_parlamentar/importadores/conv.py +++ b/radar_parlamentar/importadores/conv.py @@ -26,6 +26,8 @@ from django.utils.dateparse import parse_datetime from modelagem import models import logging +import json +import os logger = logging.getLogger("radar") @@ -43,6 +45,7 @@ GIRONDINOS = 'Girondinos' JACOBINOS = 'Jacobinos' MONARQUISTAS = 'Monarquistas' +ARQUIVO = os.path.dirname(__file__) class ImportadorConvencao: @@ -89,14 +92,17 @@ def _gera_parlamentares(self): parlamentar.save() self.parlamentares[partido.nome].append(parlamentar) - def _gera_proposicao(self, num, descricao): + def _gera_proposicao(self, num, descricao, indexacao_ementa_dict=None): prop = models.Proposicao() prop.id_prop = num prop.sigla = 'PL' prop.numero = num - prop.ementa = descricao prop.descricao = descricao prop.casa_legislativa = self.casa + prop.ementa = descricao + if indexacao_ementa_dict is not None: + prop.indexacao = indexacao_ementa_dict.get("indexacao") + prop.ementa = indexacao_ementa_dict.get("ementa") prop.save() return prop @@ -118,180 +124,46 @@ def _gera_votos(self, votacao, nome_partido, opcoes): voto.votacao = votacao voto.save() - def _gera_votacao1(self): - - numero_proposicao = '1' - descricao_proposicao = 'Reforma agrária' - prop = self._gera_proposicao(numero_proposicao, descricao_proposicao) - votacao = self._gera_votacao(numero_proposicao, descricao_proposicao, - DATA_NO_PRIMEIRO_SEMESTRE, prop) - - votos_girondinos = [models.SIM, models.ABSTENCAO, models.NAO] - self._gera_votos(votacao, GIRONDINOS, votos_girondinos) - - votos_jacobinos = [models.SIM, models.SIM, models.SIM] - self._gera_votos(votacao, JACOBINOS, votos_jacobinos) - - votos_monarquistas = [models.NAO, models.NAO, models.NAO] - self._gera_votos(votacao, MONARQUISTAS, votos_monarquistas) - - def _gera_votacao2(self): - - numero_proposicao = '2' - descricao_proposicao = 'Aumento da pensão dos nobres' - prop = self._gera_proposicao(numero_proposicao, descricao_proposicao) - votacao = self._gera_votacao(numero_proposicao, descricao_proposicao, - DATA_NO_PRIMEIRO_SEMESTRE, prop) - - votos_girondinos = [models.NAO, models.NAO, models.NAO] - self._gera_votos(votacao, GIRONDINOS, votos_girondinos) - - votos_jacobinos = [models.NAO, models.NAO, models.NAO] - self._gera_votos(votacao, JACOBINOS, votos_jacobinos) - - votos_monarquistas = [models.SIM, models.SIM, models.SIM] - self._gera_votos(votacao, MONARQUISTAS, votos_monarquistas) - - def _gera_votacao3(self): - - numero_proposicao = '3' - descricao_proposicao = 'Institui o Dia de Carlos Magno' - prop = self._gera_proposicao(numero_proposicao, descricao_proposicao) - votacao = self._gera_votacao(numero_proposicao, descricao_proposicao, - DATA_NO_PRIMEIRO_SEMESTRE, prop) - - votos_girondinos = [models.NAO, models.NAO, models.SIM] - self._gera_votos(votacao, GIRONDINOS, votos_girondinos) - - votos_jacobinos = [models.NAO, models.NAO, models.NAO] - self._gera_votos(votacao, JACOBINOS, votos_jacobinos) - - votos_monarquistas = [models.SIM, models.SIM, models.SIM] - self._gera_votos(votacao, MONARQUISTAS, votos_monarquistas) - - def _gera_votacao4(self): - - numero_proposicao = '4' - descricao_proposicao = 'Diminuição de impostos sobre a indústria' - prop = self._gera_proposicao(numero_proposicao, descricao_proposicao) - votacao = self._gera_votacao(numero_proposicao, descricao_proposicao, - DATA_NO_PRIMEIRO_SEMESTRE, prop) - - votos_girondinos = [models.SIM, models.SIM, models.SIM] - self._gera_votos(votacao, GIRONDINOS, votos_girondinos) - - votos_jacobinos = [models.SIM, models.ABSTENCAO, models.NAO] - self._gera_votos(votacao, JACOBINOS, votos_jacobinos) - - votos_monarquistas = [models.SIM, models.NAO, models.AUSENTE] - self._gera_votos(votacao, MONARQUISTAS, votos_monarquistas) - - def _gera_votacao5(self): - - numero_proposicao = '5' - descricao_proposicao = 'Guilhotinar o Conde Pierre' - prop = self._gera_proposicao(numero_proposicao, descricao_proposicao) - votacao = self._gera_votacao(numero_proposicao, descricao_proposicao, - DATA_NO_SEGUNDO_SEMESTRE, prop) - - votos_girondinos = [models.SIM, models.SIM, models.ABSTENCAO] - self._gera_votos(votacao, GIRONDINOS, votos_girondinos) - - votos_jacobinos = [models.SIM, models.SIM, models.SIM] - self._gera_votos(votacao, JACOBINOS, votos_jacobinos) - - votos_monarquistas = [models.NAO, models.NAO, models.NAO] - self._gera_votos(votacao, MONARQUISTAS, votos_monarquistas) - - def _gera_votacao6(self): - - numero_proposicao = '6' - descricao_proposicao = 'Criação de novas escolas' - prop = self._gera_proposicao(numero_proposicao, descricao_proposicao) - votacao = self._gera_votacao(numero_proposicao, descricao_proposicao, - DATA_NO_SEGUNDO_SEMESTRE, prop) - - votos_girondinos = [models.SIM, models.SIM, models.SIM] - self._gera_votos(votacao, GIRONDINOS, votos_girondinos) - - votos_jacobinos = [models.SIM, models.SIM, models.SIM] - self._gera_votos(votacao, JACOBINOS, votos_jacobinos) - - votos_monarquistas = [models.AUSENTE, models.SIM, models.SIM] - self._gera_votos(votacao, MONARQUISTAS, votos_monarquistas) - - def _gera_votacao7(self): - - numero_proposicao = '7' - descricao_proposicao = 'Aumento do efetivo militar' - prop = self._gera_proposicao(numero_proposicao, descricao_proposicao) - votacao = self._gera_votacao(numero_proposicao, descricao_proposicao, - DATA_NO_SEGUNDO_SEMESTRE, prop) - - votos_girondinos = [models.SIM, models.SIM, models.ABSTENCAO] - self._gera_votos(votacao, GIRONDINOS, votos_girondinos) - - votos_jacobinos = [models.SIM, models.SIM, models.SIM] - self._gera_votos(votacao, JACOBINOS, votos_jacobinos) - - votos_monarquistas = [models.SIM, models.AUSENTE, models.SIM] - self._gera_votos(votacao, MONARQUISTAS, votos_monarquistas) - - # votação com atributos diferentes para teste - def _gera_votacao8(self): - - numero_proposicao = '8' - descricao_proposicao = 'Guerra contra a Inglaterra' - prop = models.Proposicao() - prop.id_prop = numero_proposicao - prop.sigla = 'PL' - prop.numero = numero_proposicao - prop.ementa = 'o uso proibido de armas químicas' - prop.descricao = 'descricao da guerra' - prop.casa_legislativa = self.casa - prop.indexacao = 'bombas, efeitos, destruições' - prop.save() - votacao = self._gera_votacao(numero_proposicao, descricao_proposicao, - DATA_NO_SEGUNDO_SEMESTRE, prop) - - votos_girondinos = [models.NAO, models.NAO, models.NAO] - self._gera_votos(votacao, GIRONDINOS, votos_girondinos) - - votos_jacobinos = [models.ABSTENCAO, models.NAO, models.NAO] - self._gera_votos(votacao, JACOBINOS, votos_jacobinos) - - votos_monarquistas = [models.SIM, models.AUSENTE, models.SIM] - self._gera_votos(votacao, MONARQUISTAS, votos_monarquistas) - - def _gera_votacao9(self): - numero_proposicao = '9' - descricao_proposicao = 'Contratar médicos para a capital' - prop = self._gera_proposicao(numero_proposicao, descricao_proposicao) - votacao = self._gera_votacao(numero_proposicao, descricao_proposicao, - DATA_VOTACAO_9, prop) - - votos_girondinos = [models.SIM, models.SIM, models.ABSTENCAO] - self._gera_votos(votacao, GIRONDINOS, votos_girondinos) - - votos_jacobinos = [models.SIM, models.SIM, models.SIM] - self._gera_votos(votacao, JACOBINOS, votos_jacobinos) - - votos_monarquistas = [models.SIM, models.AUSENTE, models.SIM] - self._gera_votos(votacao, MONARQUISTAS, votos_monarquistas) + def _obtem_dados_json(self): + data = None + with open(os.path.join(ARQUIVO, 'votacoes.json')) as arquivo: + data = json.load(arquivo) + if data is None: + data = {"votacao_params": {}} + return data + + def _gera_votacao_geral(self): + data = self._obtem_dados_json() + votacoes_params = data.get("votacoes_params") + for index, valor in enumerate(votacoes_params): + numero_prop = str(index+1) + descricao_prop = valor["descricao"] + prop = valor.get("prop") + if prop is not None: + valor_prop = valor.get("prop") + descricao = valor_prop.get("descricao_extra") + indexacao_ementa_dict = { + "indexacao": valor_prop.get("indexacao"), + "ementa": valor_prop.get("ementa")} + prop = self._gera_proposicao( + numero_prop, + descricao, + indexacao_ementa_dict) + else: + prop = self._gera_proposicao(numero_prop, descricao_prop) + votacao = self._gera_votacao( + numero_prop, + descricao_prop, + DATA_NO_PRIMEIRO_SEMESTRE, prop) + partidos = valor["partidos"] + for partido, votos in partidos.items(): + self._gera_votos(votacao, partido, votos) def importar(self): self.casa = self._gera_casa_legislativa() self._gera_partidos() self._gera_parlamentares() - self._gera_votacao1() - self._gera_votacao2() - self._gera_votacao3() - self._gera_votacao4() - self._gera_votacao5() - self._gera_votacao6() - self._gera_votacao7() - self._gera_votacao8() - self._gera_votacao9() + self._gera_votacao_geral() self._gera_proposicao('10', 'Legalizacao da maconha') diff --git a/radar_parlamentar/importadores/votacoes.json b/radar_parlamentar/importadores/votacoes.json new file mode 100644 index 00000000..977d9009 --- /dev/null +++ b/radar_parlamentar/importadores/votacoes.json @@ -0,0 +1,82 @@ +{ + "votacoes_params": [ + { + "descricao": "Reforma agrária", + "partidos": { + "Girondinos": ["SIM", "ABSTENCAO", "NAO"], + "Jacobinos": ["SIM","SIM","SIM"], + "Monarquistas": ["NAO","NAO","NAO"] + } + }, + { + "descricao": "Aumento da pensão dos nobres", + "partidos": { + "Girondinos": ["NAO", "NAO", "NAO"], + "Jacobinos": ["NAO","NAO","NAO"], + "Monarquistas": ["SIM","SIM","SIM"] + } + }, + { + "descricao": "Institui o Dia de Carlos Magno", + "partidos": { + "Girondinos": ["NAO", "NAO", "SIM"], + "Jacobinos": ["NAO","NAO","NAO"], + "Monarquistas": ["SIM","SIM","SIM"] + } + }, + { + "descricao": "Diminuição de impostos sobre a indústria", + "partidos": { + "Girondinos": ["SIM", "SIM", "SIM"], + "Jacobinos": ["SIM","ABSTENCAO","NAO"], + "Monarquistas": ["SIM","NAO","AUSENTE"] + } + }, + { + "descricao": "Guilhotinar o Conde Pierre", + "partidos": { + "Girondinos": ["SIM", "SIM", "ABSTENCAO"], + "Jacobinos": ["SIM","SIM","SIM"], + "Monarquistas": ["NAO","NAO","NAO"] + } + }, + { + "descricao": "Criação de novas escolas", + "partidos": { + "Girondinos": ["SIM", "SIM", "SIM"], + "Jacobinos": ["SIM","SIM","SIM"], + "Monarquistas": ["AUSENTE","SIM","SIM"] + } + }, + { + "descricao": "Aumento do efetivo militar", + "partidos": { + "Girondinos": ["SIM", "SIM", "ABSTENCAO"], + "Jacobinos": ["SIM","SIM","SIM"], + "Monarquistas": ["SIM","AUSENTE","SIM"] + } + }, + { + "descricao": "Guerra contra a Inglaterra", + "partidos": { + "Girondinos": ["SIM", "SIM", "ABSTENCAO"], + "Jacobinos": ["SIM","SIM","SIM"], + "Monarquistas": ["SIM","AUSENTE","SIM"] + }, + "prop": { + "sigla": "PL", + "ementa": "o uso proibido de armas químicas", + "descricao_extra": "descricao da guerra", + "indexacao": "bombas, efeitos, destruições" + } + }, + { + "descricao": "Contratar médicos para a capital", + "partidos": { + "Girondinos": ["SIM", "SIM", "ABSTENCAO"], + "Jacobinos": ["SIM","SIM","SIM"], + "Monarquistas": ["SIM","AUSENTE","SIM"] + } + } + ] +} \ No newline at end of file