Example #1
0
def obter_votacao(tipo, num, ano):
    """Get votings ande details of a propositions.

    Arguments:
    tipo, num, ano -- strings that caracterize a proposition

    Retorns:
    A propostions as an object class model.Proposicao.
    If the proposition doesn't be found or doesn't have votings, returns None."""

    url  = OBTER_VOTACOES_PROPOSICAO % (tipo, num, ano)
    try:
        request = urllib2.Request(url)
        xml = urllib2.urlopen(request).read()
    except urllib2.URLError:
        return None

    try:
        prop = Proposicao.fromxml(xml)
    except:
        return None
    if not isinstance(prop, Proposicao): 
        return None

    # Here is the xml with more details about the proposition:
    xml = obter_proposicao(tipo, num, ano) 

    tree = etree.fromstring(xml)
    prop.id = tree.find_legislature('idProposicao').text
    prop.ementa = tree.find_legislature('Ementa').text
    prop.explicacao = tree.find_legislature('ExplicacaoEmenta').text
    prop.situacao = tree.find_legislature('Situacao').text
    return prop
Example #2
0
def obter_nomeProp_porid(idProp):
    """Obtém nome da proposição dado o id.
    Por exemplo: obter_nomeProp_porid(513512) retorna o string "MPV 540/2011"

    Argumentos:
    idprop -- inteiro usado como identificador único de uma proposição no webservice

    Retorna:
    Uma string com tipo, número e ano da proposição, por exemplo "MPV 540/2011".
    Caso a proposição não seja encontrada, retorna None.
    Obs: Mesmo que a proposição seja encontrada, poderá ainda assim não possuir votações.
    """
    url = OBTER_INFOS_PORID % (idProp)
    try:
        request = urllib2.Request(url)
        xml = urllib2.urlopen(request).read()
    except urllib2.URLError:
        return None

    try:
        nomeProp = Proposicao.fromxmlid(xml)
    except:
        return None

    return nomeProp
Example #3
0
def obter_votacao(tipo, num, ano):
    """Obtém votacões e detalhes de uma proposicão

    Argumentos:
    tipo, num, ano -- strings que caracterizam a proposicão

    Retorna:
    Uma proposicão como um objeto da classe model.Proposicao
    Caso a proposição não seja encontrada ou não possua votações, retorna None
    """
    url  = OBTER_VOTACOES_PROPOSICAO % (tipo, num, ano)
    try:
        request = urllib2.Request(url)
        xml = urllib2.urlopen(request).read()
    except urllib2.URLError:
        return None

    try:
        prop = Proposicao.fromxml(xml)
    except:
        return None
    if not isinstance(prop, Proposicao): 
        return None

    xml = obter_proposicao(tipo, num, ano) #aqui é o xml com mais detalhes sobre a proposição
    tree = etree.fromstring(xml)
    prop.id = tree.find('idProposicao').text
    prop.ementa = tree.find('Ementa').text
    prop.explicacao = tree.find('ExplicacaoEmenta').text
    prop.situacao = tree.find('Situacao').text 
    return prop
Example #4
0
def obter_votacao(prop_id, tipo, num, ano):
  url = OBTER_VOTACAO_PROPOSICAO % (tipo, num, ano)
  try:
    xml = urllib.request.urlopen(url).read()
  except urllib.error.HTTPError:
    return None
  xml = str(xml, "utf-8") # aqui é o xml da votação
  prop = Proposicao.fromxml(xml)
  prop.id = prop_id

  xml = obter_proposicao(prop_id) # aqui é o xml com mais detalhes sobre a proposição
  xml = str(xml, "utf-8")
  tree = etree.parse(io.StringIO(xml))
  prop.ementa = tree.find('Ementa').text
  prop.explicacao = tree.find('ExplicacaoEmenta').text
  prop.situacao = tree.find('Situacao').text
  return prop
Example #5
0
def obter_nomeProp_porid(idProp):
    """Giving the id, gets the name of proposition.
    For exemple: obter_nomeProp_porid(513512) retorns the string "MPV 540/2011"

    Arguments:
    idprop -- integer used as unique identificator of a proposition in webservice.

    Returns:
    A string with type, number and year of proposition, for exemple "MPV 540/2011".
    If the proposition doesn't be found, returns None."""

    url = OBTER_INFOS_PORID % (idProp)
    try:
        request = urllib2.Request(url)
        xml = urllib2.urlopen(request).read()
    except urllib2.URLError:
        return None

    try:
        nomeProp = Proposicao.fromxmlid(xml)
    except:
        return None

    return nomeProp
Example #6
0
    def test_semelhanca_partidos(self):
        '''Testa a função de semelhança para partidos'''

        partido1 = 'girondinos'
        partido2 = 'jacobinos'
        votacoes = []

        # votações do test
        # v1: p1(3,0,0) p2(0,3,0)
        # v2: p1(0,2,1) p2(2,0,1)
        # v3: p1(3,0,0) p2(0,2,1)

        dep1Sim = Deputado()
        dep1Sim.partido = partido1
        dep1Sim.voto = model.SIM
        dep1Nao = Deputado()
        dep1Nao.partido = partido1
        dep1Nao.voto = model.NAO
        dep1Abs = Deputado()
        dep1Abs.partido = partido1
        dep1Abs.voto = model.ABSTENCAO
        dep2Sim = Deputado()
        dep2Sim.partido = partido2
        dep2Sim.voto = model.SIM
        dep2Nao = Deputado()
        dep2Nao.partido = partido2
        dep2Nao.voto = model.NAO
        dep2Abs = Deputado()
        dep2Abs.partido = partido2
        dep2Abs.voto = model.ABSTENCAO

        # votação 1
        vot = Votacao()
        vot.deputados.append(dep1Sim)
        vot.deputados.append(dep1Sim)
        vot.deputados.append(dep1Sim)
        vot.deputados.append(dep2Nao)
        vot.deputados.append(dep2Nao)
        vot.deputados.append(dep2Nao)
        votacoes.append(vot)

        # votação 2
        vot = Votacao()
        vot.deputados.append(dep1Nao)
        vot.deputados.append(dep1Nao)
        vot.deputados.append(dep1Abs)
        vot.deputados.append(dep2Sim)
        vot.deputados.append(dep2Sim)
        vot.deputados.append(dep2Abs)
        votacoes.append(vot)

        # votação 3
        vot = Votacao()
        vot.deputados.append(dep1Sim)
        vot.deputados.append(dep1Sim)
        vot.deputados.append(dep1Sim)
        vot.deputados.append(dep2Nao)
        vot.deputados.append(dep2Nao)
        vot.deputados.append(dep2Abs)
        votacoes.append(vot)

        proposicao = Proposicao()
        proposicao.votacoes = votacoes

        proposicoes = [proposicao]

        # invocando a função testada
        s = partidos.semelhanca(partido1, partido2, proposicoes)

        # testando se tá certo
        expected = 0.008766487  # calculado na mão
        self.assertAlmostEqual(expected, s, 5)
Example #7
0
    def test_vetor_votacoes(self):
        '''testa a geração de um vetor de votações'''

        # votações testadas (s,n,a):
        #(9,0,0)
        #(0,8,1)
        #(7,1,1)
        #(3,3,3)

        partido = 'arena'
        votacoes = []

        depSim = Deputado()
        depSim.partido = partido
        depSim.voto = model.SIM
        depNao = Deputado()
        depNao.partido = partido
        depNao.voto = model.NAO
        depAbs = Deputado()
        depAbs.partido = partido
        depAbs.voto = model.ABSTENCAO

        # 1a votação
        vot = Votacao()
        for i in range(0, 9):
            vot.deputados.append(depSim)
        votacoes.append(vot)

        # 2a votação
        vot = Votacao()
        for i in range(0, 8):
            vot.deputados.append(depNao)
        vot.deputados.append(depAbs)
        votacoes.append(vot)

        # 3a votação
        vot = Votacao()
        for i in range(0, 7):
            vot.deputados.append(depSim)
        vot.deputados.append(depNao)
        vot.deputados.append(depAbs)
        votacoes.append(vot)

        # 4a votação
        vot = Votacao()
        for i in range(0, 3):
            vot.deputados.append(depSim)
        for i in range(0, 3):
            vot.deputados.append(depNao)
        for i in range(0, 3):
            vot.deputados.append(depAbs)
        votacoes.append(vot)

        proposicao = Proposicao()
        proposicao.votacoes = votacoes
        proposicoes = [proposicao]

        # invocando a função testada
        vetor = partidos.vetor_votacoes(partido, proposicoes)

        # testando se tá certo
        expected = [1, -0.88889, 0.66667, 0]
        self.assertEqual(len(expected), len(vetor))
        for e, v in zip(expected, vetor):
            self.assertAlmostEqual(e, v, 5)
Example #8
0
    def test_semelhanca_partidos(self):
        """ Tests the function of similarity for political partidos."""

        party1 = 'girondinos'
        party2 = 'jacobinos'
        votings = []

        # Votations of the test:
        # v1: p1(3,0,0) p2(0,3,0)
        # v2: p1(0,2,1) p2(2,0,1)
        # v3: p1(3,0,0) p2(0,2,1)
        dep1Sim = Deputado()
        dep1Sim.partido = party1
        dep1Sim.voto = model.SIM
        dep1Nao = Deputado()
        dep1Nao.partido = party1
        dep1Nao.voto = model.NAO
        dep1Abs = Deputado()
        dep1Abs.partido = party1
        dep1Abs.voto = model.ABSTENCAO
        dep2Sim = Deputado()
        dep2Sim.partido = party2
        dep2Sim.voto = model.SIM
        dep2Nao = Deputado()
        dep2Nao.partido = party2
        dep2Nao.voto = model.NAO
        dep2Abs = Deputado()
        dep2Abs.partido = party2
        dep2Abs.voto = model.ABSTENCAO

        # First grade:
        vot = Votacao()
        vot.deputados.append(dep1Sim)
        vot.deputados.append(dep1Sim)
        vot.deputados.append(dep1Sim)
        vot.deputados.append(dep2Nao)
        vot.deputados.append(dep2Nao)
        vot.deputados.append(dep2Nao)
        votings.append(vot)

        # Second grade:
        vot = Votacao()
        vot.deputados.append(dep1Nao)
        vot.deputados.append(dep1Nao)
        vot.deputados.append(dep1Abs)
        vot.deputados.append(dep2Sim)
        vot.deputados.append(dep2Sim)
        vot.deputados.append(dep2Abs)
        votings.append(vot)

        # Third grade:
        vot = Votacao()
        vot.deputados.append(dep1Sim)
        vot.deputados.append(dep1Sim)
        vot.deputados.append(dep1Sim)
        vot.deputados.append(dep2Nao)
        vot.deputados.append(dep2Nao)
        vot.deputados.append(dep2Abs)
        votings.append(vot)

        proposition = Proposicao()
        proposition.votacoes = votings

        propositions = [proposition]

        # Tested by invoking the function:
        s = partidos.similarity(party1, party2, propositions)

        # If testing is right;
        # Calculating on hand:
        expected = 0.008766487
        self.assertAlmostEqual(expected, s, 5)
Example #9
0
    def test_vetor_votacoes(self):
        """Tests the generation of an array of polls."""

        # Tested polls (s,n,a):
        # (9,0,0)
        # (0,8,1)
        # (7,1,1)
        # (3,3,3)
        party = 'arena'
        votings = []

        deputy_vote_yes = Deputado()
        deputy_vote_yes.partido = party
        deputy_vote_yes.voto = model.SIM
        deputy_vote_no = Deputado()
        deputy_vote_no.partido = party
        deputy_vote_no.voto = model.NAO
        depute_vote_abstention = Deputado()
        depute_vote_abstention.partido = party
        depute_vote_abstention.voto = model.ABSTENCAO

        # First grade:
        vote = Votacao()
        for i in range(0, 9):
            vote.deputados.append(deputy_vote_yes)
        votings.append(vote)

        # Second grade::
        vote = Votacao()
        for i in range(0, 8):
            vote.deputados.append(deputy_vote_no)
        vote.deputados.append(depute_vote_abstention)
        votings.append(vote)

        # Third grade:
        vote = Votacao()
        for i in range(0, 7):
            vote.deputados.append(deputy_vote_yes)
        vote.deputados.append(deputy_vote_no)
        vote.deputados.append(depute_vote_abstention)
        votings.append(vote)

        # Fourth voting:
        vote = Votacao()
        for i in range(0, 3):
            vote.deputados.append(deputy_vote_yes)
        for i in range(0, 3):
            vote.deputados.append(deputy_vote_no)
        for i in range(0, 3):
            vote.deputados.append(depute_vote_abstention)
        votings.append(vote)

        proposition = Proposicao()
        proposition.votacoes = votings
        propositions = [proposition]

        # Tested by invoking the function:
        vector = partidos.votings_vector(party, propositions)

        # If testing is right:
        expected = [1, -0.88889, 0.66667, 0]
        self.assertEqual(len(expected), len(vector))
        for e, v in zip(expected, vector):
            self.assertAlmostEqual(e, v, 5)
Example #10
0
  def test_semelhanca_partidos(self):
    """ Tests the function of similarity for political partidos."""

    party1 = 'girondinos'
    party2 = 'jacobinos'
    votings = []

    # Votations of the test:
    # v1: p1(3,0,0) p2(0,3,0)
    # v2: p1(0,2,1) p2(2,0,1)
    # v3: p1(3,0,0) p2(0,2,1)
    dep1Sim = Deputado()
    dep1Sim.partido = party1
    dep1Sim.voto = model.SIM 
    dep1Nao = Deputado()
    dep1Nao.partido = party1
    dep1Nao.voto = model.NAO
    dep1Abs = Deputado()
    dep1Abs.partido = party1
    dep1Abs.voto = model.ABSTENCAO 
    dep2Sim = Deputado()
    dep2Sim.partido = party2
    dep2Sim.voto = model.SIM 
    dep2Nao = Deputado()
    dep2Nao.partido = party2
    dep2Nao.voto = model.NAO
    dep2Abs = Deputado()
    dep2Abs.partido = party2
    dep2Abs.voto = model.ABSTENCAO 

    # First grade:
    vot = Votacao()
    vot.deputados.append(dep1Sim)
    vot.deputados.append(dep1Sim)
    vot.deputados.append(dep1Sim)
    vot.deputados.append(dep2Nao)
    vot.deputados.append(dep2Nao)
    vot.deputados.append(dep2Nao)
    votings.append(vot)

    # Second grade:
    vot = Votacao()
    vot.deputados.append(dep1Nao)
    vot.deputados.append(dep1Nao)
    vot.deputados.append(dep1Abs)
    vot.deputados.append(dep2Sim)
    vot.deputados.append(dep2Sim)
    vot.deputados.append(dep2Abs)
    votings.append(vot)

    # Third grade:
    vot = Votacao()
    vot.deputados.append(dep1Sim)
    vot.deputados.append(dep1Sim)
    vot.deputados.append(dep1Sim)
    vot.deputados.append(dep2Nao)
    vot.deputados.append(dep2Nao)
    vot.deputados.append(dep2Abs)
    votings.append(vot)

    proposition = Proposicao()
    proposition.votacoes = votings

    propositions = [proposition]

    # Tested by invoking the function:
    s = partidos.similarity(party1, party2, propositions)

    # If testing is right;
    # Calculating on hand:
    expected = 0.008766487 
    self.assertAlmostEqual(expected, s, 5)
Example #11
0
  def test_vetor_votacoes(self): 
    """Tests the generation of an array of polls."""

    # Tested polls (s,n,a):
    # (9,0,0) 
    # (0,8,1) 
    # (7,1,1) 
    # (3,3,3) 
    party = 'arena'
    votings = []

    deputy_vote_yes = Deputado()
    deputy_vote_yes.partido = party
    deputy_vote_yes.voto = model.SIM
    deputy_vote_no = Deputado()
    deputy_vote_no.partido = party
    deputy_vote_no.voto = model.NAO
    depute_vote_abstention = Deputado()
    depute_vote_abstention.partido = party
    depute_vote_abstention.voto = model.ABSTENCAO

    # First grade:
    vote = Votacao()
    for i in range(0,9):
      vote.deputados.append(deputy_vote_yes)
    votings.append(vote)

    # Second grade::
    vote = Votacao()
    for i in range(0,8):
      vote.deputados.append(deputy_vote_no)
    vote.deputados.append(depute_vote_abstention)
    votings.append(vote)

    # Third grade:
    vote = Votacao()
    for i in range(0,7):
      vote.deputados.append(deputy_vote_yes)
    vote.deputados.append(deputy_vote_no)
    vote.deputados.append(depute_vote_abstention)
    votings.append(vote)

    # Fourth voting:
    vote = Votacao()
    for i in range(0,3):
      vote.deputados.append(deputy_vote_yes)
    for i in range(0,3):
      vote.deputados.append(deputy_vote_no)
    for i in range(0,3):
      vote.deputados.append(depute_vote_abstention)
    votings.append(vote)

    proposition = Proposicao()
    proposition.votacoes = votings
    propositions = [proposition]
  
    # Tested by invoking the function:
    vector = partidos.votings_vector(party, propositions)

    # If testing is right:
    expected = [1, -0.88889, 0.66667, 0]
    self.assertEqual(len(expected), len(vector))
    for e, v in zip(expected, vector):
      self.assertAlmostEqual(e, v, 5)
Example #12
0
  def test_semelhanca_partidos(self):
    '''Testa a função de semelhança para partidos'''

    partido1 = 'girondinos'
    partido2 = 'jacobinos'
    votacoes = []

    # votações do test
    # v1: p1(3,0,0) p2(0,3,0)
    # v2: p1(0,2,1) p2(2,0,1)
    # v3: p1(3,0,0) p2(0,2,1)

    dep1Sim = Deputado()
    dep1Sim.partido = partido1
    dep1Sim.voto = model.SIM 
    dep1Nao = Deputado()
    dep1Nao.partido = partido1
    dep1Nao.voto = model.NAO
    dep1Abs = Deputado()
    dep1Abs.partido = partido1
    dep1Abs.voto = model.ABSTENCAO 
    dep2Sim = Deputado()
    dep2Sim.partido = partido2
    dep2Sim.voto = model.SIM 
    dep2Nao = Deputado()
    dep2Nao.partido = partido2
    dep2Nao.voto = model.NAO
    dep2Abs = Deputado()
    dep2Abs.partido = partido2
    dep2Abs.voto = model.ABSTENCAO 

    # votação 1
    vot = Votacao()
    vot.deputados.append(dep1Sim)
    vot.deputados.append(dep1Sim)
    vot.deputados.append(dep1Sim)
    vot.deputados.append(dep2Nao)
    vot.deputados.append(dep2Nao)
    vot.deputados.append(dep2Nao)
    votacoes.append(vot)

    # votação 2
    vot = Votacao()
    vot.deputados.append(dep1Nao)
    vot.deputados.append(dep1Nao)
    vot.deputados.append(dep1Abs)
    vot.deputados.append(dep2Sim)
    vot.deputados.append(dep2Sim)
    vot.deputados.append(dep2Abs)
    votacoes.append(vot)

    # votação 3
    vot = Votacao()
    vot.deputados.append(dep1Sim)
    vot.deputados.append(dep1Sim)
    vot.deputados.append(dep1Sim)
    vot.deputados.append(dep2Nao)
    vot.deputados.append(dep2Nao)
    vot.deputados.append(dep2Abs)
    votacoes.append(vot)

    proposicao = Proposicao()
    proposicao.votacoes = votacoes

    proposicoes = [proposicao]

    # invocando a função testada
    s = partidos.semelhanca(partido1, partido2, proposicoes)

    # testando se tá certo
    expected = 0.2524905 # calculado na mão
    self.assertAlmostEqual(expected, s, 5)
Example #13
0
  def test_vetor_votacoes(self): 
    '''testa a geração de um vetor de votações'''

    # votações testadas (s,n,a):
    #(9,0,0) 
    #(0,8,1) 
    #(7,1,1) 
    #(3,3,3) 

    partido = 'arena'
    votacoes = []

    depSim = Deputado()
    depSim.partido = partido
    depSim.voto = model.SIM 
    depNao = Deputado()
    depNao.partido = partido
    depNao.voto = model.NAO
    depAbs = Deputado()
    depAbs.partido = partido
    depAbs.voto = model.ABSTENCAO 

    # 1a votação
    vot = Votacao()
    for i in range(0,9):
      vot.deputados.append(depSim)
    votacoes.append(vot)

    # 2a votação
    vot = Votacao()
    for i in range(0,8):
      vot.deputados.append(depNao)
    vot.deputados.append(depAbs)
    votacoes.append(vot)

    # 3a votação
    vot = Votacao()
    for i in range(0,7):
      vot.deputados.append(depSim)
    vot.deputados.append(depNao)
    vot.deputados.append(depAbs)
    votacoes.append(vot)

    # 4a votação
    vot = Votacao()
    for i in range(0,3):
      vot.deputados.append(depSim)
    for i in range(0,3):
      vot.deputados.append(depNao)
    for i in range(0,3):
      vot.deputados.append(depAbs)
    votacoes.append(vot)

    proposicao = Proposicao()
    proposicao.votacoes = votacoes
    proposicoes = [proposicao]
  
    # invocando a função testada
    vetor = partidos.vetor_votacoes(partido, proposicoes)

    # testando se tá certo
    expected = [1, 0.055555556, 0.833333333, 0.5]
    self.assertEqual(len(expected), len(vetor))
    for e, v in zip(expected, vetor):
      self.assertAlmostEqual(e, v, 5)