Пример #1
0
 def obter_relatorio(self,
                     parlamentar_id,
                     data_final=datetime.now(),
                     periodo_dias=7):
     try:
         start_time = time()
         self.relatorio = Relatorio()
         self.relatorio.aviso_dados = u'Dados de sessões plenárias não disponível.'
         self.set_period(periodo_dias)
         data_final = datetime.strptime(data_final, '%Y-%m-%d')
         data_inicial = self.obterDataInicial(data_final, **self.periodo)
         logging.info('[ALESP] Parlamentar: {}'.format(parlamentar_id))
         logging.info('[ALESP] Data final: {}'.format(data_final))
         logging.info('[ALESP] Intervalo: {}'.format(periodo_dias))
         self.obter_parlamentar(parlamentar_id)
         if self.relatorio.parlamentar == None:
             logging.error("[ALESP] Deputado não encontrado")
             raise ModelError('Parlamentar não encontrado')
         self.relatorio.data_inicial = self.brasilia_tz.localize(
             data_inicial)
         self.relatorio.data_final = self.brasilia_tz.localize(data_final)
         logging.info(
             '[ALESP] Deputado obtido em {0:.5f}s'.format(time() -
                                                          start_time))
         comissoes = self.obterComissoesPorId()
         logging.info('[ALESP] Comissoes por id obtidas em {0:.5f}s'.format(
             time() - start_time))
         votacoes = self.obterVotacoesPorReuniao(parlamentar_id)
         logging.info(
             '[ALESP] Votos do deputado obtidos em {0:.5f}s'.format(
                 time() - start_time))
         orgaos_nomes = self.obterComissoesDeputado(comissoes,
                                                    parlamentar_id,
                                                    data_inicial,
                                                    data_final)
         logging.info(
             '[ALESP] Comissoes do deputado obtidas em {0:.5f}s'.format(
                 time() - start_time))
         self.obterEventosPresentes(parlamentar_id, data_inicial,
                                    data_final, votacoes, comissoes,
                                    orgaos_nomes)
         self.relatorio.eventos_ausentes_esperados_total = len(
             self.relatorio.eventos_previstos)
         logging.info(
             '[ALESP] Eventos obtidos em {0:.5f}s'.format(time() -
                                                          start_time))
         self.obterProposicoesDeputado(parlamentar_id, data_inicial,
                                       data_final)
         logging.info(
             '[ALESP] Proposicoes obtidas em {0:.5f}s'.format(time() -
                                                              start_time))
         logging.info(
             '[ALESP] Relatorio obtido em {0:.5f}s'.format(time() -
                                                           start_time))
         return self.relatorio
     except ALESPError as e:
         logging.error("[ALESP] {}".format(e))
         raise ModelError('Erro')
Пример #2
0
 def obter_parlamentares(self):
     try:
         parlamentares = []
         for deputado in self.dep.obterTodosDeputados():
             parlamentar = Parlamentar()
             parlamentar.cargo = 'SP'
             parlamentar.id = deputado['id']
             parlamentar.nome = deputado['nome']
             parlamentar.partido = deputado['siglaPartido']
             parlamentar.uf = 'SP'
             parlamentar.foto = deputado[
                 'urlFoto'] if 'urlFoto' in deputado else None
             parlamentares.append(parlamentar)
         return parlamentares
     except ALESPError as e:
         logging.error("[ALESP] {}".format(e))
         raise ModelError("Erro da API da ALESP")
Пример #3
0
 def obter_relatorio(self, parlamentar_id, data_final=None, periodo_dias=7):
     try:
         self.relatorio = Relatorio()
         self.relatorio.aviso_dados = u'Dados de votações em comissões não disponíveis.'
         start_time = time()
         if data_final:
             data_final = datetime.strptime(data_final, '%Y-%m-%d')
         else:
             data_final = datetime.now()
         logging.info('[BR1] Parlamentar: {}'.format(parlamentar_id))
         logging.info('[BR1] Data final: {}'.format(data_final))
         logging.info('[BR1] Intervalo: {}'.format(periodo_dias))
         self.set_period(periodo_dias)
         assemblyman_info = self.obter_parlamentar(parlamentar_id)
         self.relatorio.data_inicial = self.helper.get_brt(
             self.obterDataInicial(data_final, **self.periodo))
         self.relatorio.data_final = self.helper.get_brt(data_final)
         logging.info('[BR1] Deputado obtido em {0:.5f}s'.format(time() - start_time))
         events = self.helper.get_all_events(data_final)
         events_attended = self.helper.get_attended_events(events, assemblyman_info['id'])
         logging.info('[BR1] Eventos obtidos em {0:.5f}s'.format(time() - start_time))
         self.relatorio.orgaos = self.helper.get_commissions(assemblyman_info.id, data_final)
         logging.info('[BR1] Orgaos obtidos em {0:.5f}s'.format(time() - start_time))
         self._add_attended_events(events_attended)
         logging.info('[BR1] Pautas obtidas em {0:.5f}s'.format(time() - start_time))
         events_expected = self.helper.get_expected_events(self.relatorio.parlamentar.id, data_final)
         events_absent = self.helper.get_absent_events(
             events,
             events_attended,
             events_expected,
             self.relatorio.orgaos
         )
         self._add_absent_events(events_absent)
         logging.info('[BR1] Ausencias obtidas em {0:.5f}s'.format(time() - start_time))
         self.relatorio.proposicoes = self.helper.get_propositions(assemblyman_info, data_final)
         logging.info('[BR1] Proposicoes obtidas em {0:.5f}s'.format(time() - start_time))
         logging.info('[BR1] Relatorio obtido em {0:.5f}s'.format(time() - start_time))
         return self.relatorio
     except CamaraDeputadosError as event:
         logging.error("[BR1] {}".format(event))
         raise ModelError("API Câmara dos Deputados indisponível")
Пример #4
0
 def obter_parlamentar(self, parlamentar_id):
     """
     Deve ser implementado pelas classes herdeiras
     """
     raise ModelError("obter_parlamentar deve ser implementado")
Пример #5
0
 def obter_relatorio(self, parlamentar_id, data_final, periodo_dias):
     """
     Deve ser implementado pelas classes herdeiras
     """
     raise ModelError("obter_relatorio deve ser implementado")
Пример #6
0
 def obter_relatorio(self, parlamentar, *args, **kwargs):
     if parlamentar == '2':
         raise ModelError('msg')
     return {"nice": "JSON"}
 def obter_relatorio(self,
                     parlamentar_id,
                     data_final=datetime.now(),
                     periodo_dias=7):
     try:
         start_time = time()
         self.relatorio = Relatorio()
         self.relatorio.aviso_dados = u'Dados de sessões de comissões não disponível.'
         self.set_period(periodo_dias)
         data_final = datetime.strptime(data_final, '%Y-%m-%d')
         data_inicial = self.obterDataInicial(data_final, **self.periodo)
         logging.info('[SAO PAULO] Parlamentar: {}'.format(parlamentar_id))
         logging.info('[SAO PAULO] Data final: {}'.format(data_final))
         logging.info('[SAO PAULO] Intervalo: {}'.format(periodo_dias))
         vereador = self.obter_parlamentar(parlamentar_id)
         logging.info(
             '[SAO PAULO] Vereador obtido em {0:.5f}s'.format(time() -
                                                              start_time))
         self.relatorio.data_inicial = self.brasilia_tz.localize(
             data_inicial)
         self.relatorio.data_final = self.brasilia_tz.localize(data_final)
         presenca = []
         sessao_total = 0
         presenca_total = 0
         for dia in self.ver.obterPresenca(data_inicial, data_final):
             if dia:
                 for v in dia['vereadores']:
                     if str(v['chave']) == vereador.id:
                         for s in v['sessoes']:
                             if s['presenca'] == 'Presente':
                                 presenca.append(s['nome'])
                         sessao_total += int(dia['totalOrd']) + int(
                             dia['totalExtra'])
                         presenca_total += sum([
                             int(v['presenteOrd']),
                             int(v['presenteExtra'])
                         ])
                 for key, value in dia['sessoes'].items():
                     evento = Evento()
                     orgao = Orgao()
                     orgao.nome = 'Plenário'
                     orgao.apelido = 'PLENÁRIO'
                     evento.orgaos.append(orgao)
                     evento.nome = key
                     evento.id = str(uuid4())
                     if value['data']:
                         try:
                             evento.data_inicial = self.brasilia_tz.localize(
                                 datetime.strptime(value['data'],
                                                   "%d/%m/%Y"))
                             evento.data_final = self.brasilia_tz.localize(
                                 datetime.strptime(value['data'],
                                                   "%d/%m/%Y"))
                         except ValueError:
                             pass
                     for prop in value['pautas']:
                         proposicao = Proposicao()
                         proposicao.pauta = prop['projeto']
                         proposicao.tipo = prop['pauta']
                         for v in prop['votos']:
                             if str(v['chave']) == parlamentar_id:
                                 proposicao.voto = v['voto']
                         evento.pautas.append(proposicao)
                     if key in presenca:
                         evento.set_presente()
                         self.relatorio.eventos_presentes.append(evento)
                     else:
                         evento.set_ausencia_evento_esperado()
                         self.relatorio.eventos_ausentes.append(evento)
         logging.info(
             '[SAO PAULO] Eventos obtidos em {0:.5f}s'.format(time() -
                                                              start_time))
         self.relatorio.eventos_ausentes_esperados_total = sessao_total - presenca_total
         self.obter_proposicoes_parlamentar(vereador.id, data_inicial,
                                            data_final)
         logging.info('[SAO PAULO] Proposicoes obtidas em {0:.5f}s'.format(
             time() - start_time))
         logging.info(
             '[SAO PAULO] Relatorio obtido em {0:.5f}s'.format(time() -
                                                               start_time))
         return self.relatorio
     except Exception as e:
         logging.error(e)
         raise ModelError(str(e))