예제 #1
0
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
예제 #2
0
    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)
예제 #3
0
 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 = ""
예제 #4
0
    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)