def ordem_dos_parlamentares(proposicao): """Recebe um objeto Proposicao, e retorna uma lista de 2-tuplas onde o primeiro elemento é uma votação e o segundo é uma lista de objetos Parlamentar. A lista conterá os parlamentares que possuem Voto na Votacao. A lista estará ordenada conforme o seguinte critério: 1o. Por partido, sendo que a ordem dos partidos deverá vir da primeira componente principal de uma PCA feita sobre as votações da legislatura da votação mais recente da proposição. 2o. Partidos iguais na PCA, ordenar pelo maior partido primeiro, na soma de todas as votações. 3o. Ordem alfabética de partidos. 4o. Parlamentar que votou mais primeiro. 5o. Ordem alfabética de parlamentar. """ retorno = [] votacs = Votacao.objects.filter(proposicao=proposicao).order_by('data') casa = proposicao.casa_legislativa datas_votacoes = [votac.data for votac in votacs] pr = utils.PeriodosRetriever(casa_legislativa = casa, periodicidade = QUADRIENIO, data_da_primeira_votacao = min(datas_votacoes), data_da_ultima_votacao = max(datas_votacoes), numero_minimo_de_votacoes = 1 ) periodo = pr.get_periodos()[-1] # usar o ultimo periodo, mais recente. # primeiro criterio sao partidos: lista_ordenada_partidos = ordenar_partidos(casa, periodo) # segundo criterio foi quem votou mais, ou seja, nao se absteve/faltou: dicionario_votantes = ordenar_votantes(proposicao) # parlamtr -> (partido,int (qtas votou)) for votacao in votacs: retorno.append((votacao,ordem_dos_parl_por_votacao(votacao, dicionario_votantes, lista_ordenada_partidos))) return retorno
def setUp(self): self.casa = models.CasaLegislativa.objects.get(nome_curto='conv') for partido in JsonAnaliseGeneratorTest.importer.partidos: if partido.nome == conv.GIRONDINOS: self.girondinos = partido if partido.nome == conv.JACOBINOS: self.jacobinos = partido if partido.nome == conv.MONARQUISTAS: self.monarquistas = partido analise_temporal = AnaliseTemporal() analise_temporal.casa_legislativa = self.casa analise_temporal.periodicidade = models.BIENIO analise_temporal.analises_periodo = [] analise_temporal.total_votacoes = 8 self.chefe = models.ChefeExecutivo(nome="Luiz Inacio Pierre da Silva", genero="M", partido = self.girondinos, mandato_ano_inicio = 1989, mandato_ano_fim = 1990) self.chefe.save() self.chefe.casas_legislativas.add(self.casa) ap1 = AnalisePeriodo() periodos_retriever = utils.PeriodosRetriever(self.casa, models.BIENIO) periodos = periodos_retriever.get_periodos() ap1.casa_legislativa = None ap1.periodo = periodos[0] ap1.partidos = [self.girondinos, self.jacobinos, self.monarquistas] ap1.votacoes = [] ap1.chefes_executivos = [self.chefe] ap1.num_votacoes = 0 ap1.tamanhos_partidos = { self.girondinos: 3, self.jacobinos: 3, self.monarquistas: 3} ap1.soma_dos_tamanhos_dos_partidos = 3 * 3 ap1.pca = PCAStub() ap1.coordenadas_partidos = {} ap1.coordenadas_partidos[conv.JACOBINOS] = [-0.4, 0.3] ap1.coordenadas_partidos[conv.GIRONDINOS] = [0.9, -0.3] ap1.coordenadas_partidos[conv.MONARQUISTAS] = [0.2, 0.1] ap1.parlamentares_por_partido = \ JsonAnaliseGeneratorTest.importer.parlamentares ap1.coordenadas_parlamentares = {} # parlamentar.id => [x,y] for partido, parlamentares in ap1.parlamentares_por_partido.items(): for parlamentar in parlamentares: ap1.coordenadas_parlamentares[parlamentar.id] = [random(), random()] analise_temporal.analises_periodo.append(ap1) gen = grafico.JsonAnaliseGenerator(analise_temporal) generated_json = gen.get_json() self.dict_analise = json.loads(generated_json)
def __init__(self, casa_legislativa, periodicidade, palavras_chave=[], votacoes=[]): self.casa_legislativa = casa_legislativa retriever = utils.PeriodosRetriever( self.casa_legislativa, periodicidade) self.periodos = retriever.get_periodos() self.ini = self.periodos[0].ini self.fim = self.periodos[len(self.periodos) - 1].fim self.periodicidade = periodicidade self.analises_periodo = [] self.palavras_chave = palavras_chave self.votacoes = [] self.total_votacoes = 0 self.json = ""
def setUp(self): self.casa = models.CasaLegislativa.objects.get(nome_curto='conv') for partido in JsonAnaliseGeneratorTest.importer.partidos: if partido.nome == conv.GIRONDINOS: self.girondinos = partido if partido.nome == conv.JACOBINOS: self.jacobinos = partido if partido.nome == conv.MONARQUISTAS: self.monarquistas = partido self.analiseTemporal = AnaliseTemporal() self.analiseTemporal.casa_legislativa = self.casa self.analiseTemporal.periodicidade = models.BIENIO self.analiseTemporal.analises_periodo = [] self.analiseTemporal.total_votacoes = 8 ap1 = AnalisePeriodo() periodos_retriever = utils.PeriodosRetriever(self.casa, models.BIENIO) periodos = periodos_retriever.get_periodos() ap1.casa_legislativa = None ap1.periodo = periodos[0] ap1.partidos = [self.girondinos, self.jacobinos, self.monarquistas] ap1.votacoes = [] ap1.num_votacoes = 0 ap1.tamanhos_partidos = { self.girondinos: 3, self.jacobinos: 3, self.monarquistas: 3 } ap1.soma_dos_tamanhos_dos_partidos = 3 * 3 ap1.pca = PCAStub() ap1.coordenadas_partidos = {} ap1.coordenadas_partidos[conv.JACOBINOS] = [-0.4, 0.3] ap1.coordenadas_partidos[conv.GIRONDINOS] = [0.9, -0.3] ap1.coordenadas_partidos[conv.MONARQUISTAS] = [0.2, 0.1] ap1.legislaturas_por_partido = JsonAnaliseGeneratorTest.importer.legs ap1.coordenadas_legislaturas = {} # legislatura.id => [x,y] for p, legs in ap1.legislaturas_por_partido.items(): for leg in legs: ap1.coordenadas_legislaturas[leg.id] = [random(), random()] self.analiseTemporal.analises_periodo.append(ap1)