Пример #1
0
 def check_partido(self, obj):
     legislatura_id = self.context.get('legislatura')
     if not legislatura_id:
         legislatura = Legislatura.objects.first()
     else:
         legislatura = Legislatura.objects.get(id=legislatura_id)
     filiacao = filiacao_data(obj, legislatura.data_inicio,
                              legislatura.data_fim)
     return filiacao
Пример #2
0
def get_presentes(pk, response, materia):
    if type(materia) == OrdemDia:
        presentes = PresencaOrdemDia.objects.filter(sessao_plenaria_id=pk)
    else:
        presentes = SessaoPlenariaPresenca.objects.filter(
            sessao_plenaria_id=pk)

    sessao = SessaoPlenaria.objects.get(id=pk)
    num_presentes = len(presentes)
    data_sessao = sessao.data_inicio
    oradores = OradorExpediente.objects.filter(
        sessao_plenaria_id=pk).order_by('numero_ordem')

    oradores_list = []
    for o in oradores:

        oradores_list.append({
            'nome': o.parlamentar.nome_parlamentar,
            'numero': o.numero_ordem
        })

    presentes_list = []
    for p in presentes:
        legislatura = sessao.legislatura
        # Recupera os mandatos daquele parlamentar
        mandatos = p.parlamentar.mandato_set.filter(legislatura=legislatura)

        if p.parlamentar.ativo and mandatos:
            filiacao = filiacao_data(p.parlamentar, data_sessao, data_sessao)
            if not filiacao:
                partido = 'Sem Registro'
            else:
                partido = filiacao

            presentes_list.append({
                'id': p.id,
                'parlamentar_id': p.parlamentar.id,
                'nome': p.parlamentar.nome_parlamentar,
                'partido': partido,
                'voto': ''
            })

        elif not p.parlamentar.ativo or not mandatos:
            num_presentes += -1

    if materia:
        if materia.tipo_votacao == 1:
            tipo_votacao = 'Simbólica'
        elif materia.tipo_votacao == 2:
            tipo_votacao = 'Nominal'
        elif materia.tipo_votacao == 3:
            tipo_votacao = 'Secreta'

        response.update({
            'tipo_resultado': materia.resultado,
            'observacao_materia': html.unescape(materia.observacao),
            'tipo_votacao': tipo_votacao,
            'materia_legislativa_texto': str(materia.materia)
        })

    presentes_list = sort_lista_chave(presentes_list, 'nome')

    response.update({
        'presentes': presentes_list,
        'num_presentes': num_presentes,
        'oradores': oradores_list,
        'msg_painel': str(_('Votação aberta!')),
    })

    return response
Пример #3
0
def filiacao_intervalo_filter(parlamentar, date_range):
    return filiacao_data(parlamentar, date_range[0], date_range[1])
Пример #4
0
def filiacao_data_filter(parlamentar, data_inicio):
    return filiacao_data(parlamentar, data_inicio)
Пример #5
0
def filiacao_intervalo_filter(parlamentar, date_range):
    try:
        filiacao = filiacao_data(parlamentar, date_range[0], date_range[1])
    except Exception:
        filiacao = ''
    return filiacao
Пример #6
0
def filiacao_data_filter(parlamentar, data_inicio):
    try:
        filiacao = filiacao_data(parlamentar, data_inicio)
    except Exception:
        filiacao = ''
    return filiacao
Пример #7
0
def get_sessao_plenaria(sessao, casa):

    inf_basicas_dic = {}
    inf_basicas_dic["num_sessao_plen"] = str(sessao.numero)
    inf_basicas_dic["nom_sessao"] = sessao.tipo.nome
    inf_basicas_dic["num_legislatura"] = str(sessao.legislatura)
    inf_basicas_dic["num_sessao_leg"] = sessao.sessao_legislativa.numero
    inf_basicas_dic["dat_inicio_sessao"] = sessao.data_inicio.strftime(
        "%d/%m/%Y")
    inf_basicas_dic["hr_inicio_sessao"] = sessao.hora_inicio
    if sessao.data_fim:
        inf_basicas_dic["dat_fim_sessao"] = \
            sessao.data_fim.strftime("%d/%m/%Y")
    else:
        inf_basicas_dic["dat_fim_sessao"] = ''
    inf_basicas_dic["hr_fim_sessao"] = sessao.hora_fim
    inf_basicas_dic["nom_camara"] = casa.nome

    # Lista da composicao da mesa diretora
    lst_mesa = []
    for composicao in IntegranteMesa.objects.filter(sessao_plenaria=sessao):
        for parlamentar in Parlamentar.objects.filter(
                id=composicao.parlamentar.id):
            for cargo in CargoMesa.objects.filter(id=composicao.cargo.id):
                dic_mesa = {}
                dic_mesa['nom_parlamentar'] = parlamentar.nome_parlamentar
                partido_sigla = Filiacao.objects.filter(
                    parlamentar=parlamentar).first()
                if not partido_sigla:
                    sigla = ''
                else:
                    sigla = partido_sigla.partido.sigla
                dic_mesa['sgl_partido'] = sigla
                dic_mesa['des_cargo'] = cargo.descricao
                lst_mesa.append(dic_mesa)

    # Lista de presença na sessão
    lst_presenca_sessao = []
    presenca = SessaoPlenariaPresenca.objects.filter(
        sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar')

    for parlamentar in [p.parlamentar for p in presenca]:
        dic_presenca = {}
        dic_presenca["nom_parlamentar"] = parlamentar.nome_parlamentar
        partido_sigla = filiacao_data(parlamentar, sessao.data_inicio)

        dic_presenca['sgl_partido'] = partido_sigla
        lst_presenca_sessao.append(dic_presenca)

    # Exibe os Expedientes
    lst_expedientes = []
    expedientes = ExpedienteSessao.objects.filter(
        sessao_plenaria=sessao).order_by('tipo__nome')

    for e in expedientes:

        dic_expedientes = {}
        dic_expedientes["nom_expediente"] = e.tipo.nome
        conteudo = e.conteudo

        # unescape HTML codes
        # https://github.com/interlegis/sapl/issues/1046
        conteudo = re.sub('style=".*?"', '', conteudo)
        conteudo = html.unescape(conteudo)

        # escape special character '&'
        #   https://github.com/interlegis/sapl/issues/1009
        conteudo = conteudo.replace('&', '&')

        dic_expedientes["txt_expediente"] = conteudo

        if dic_expedientes:
            lst_expedientes.append(dic_expedientes)

    # Lista das matérias do Expediente, incluindo o resultado das votacoes
    lst_expediente_materia = []
    for expediente_materia in ExpedienteMateria.objects.filter(
            sessao_plenaria=sessao):
        # seleciona os detalhes de uma matéria
        materia = MateriaLegislativa.objects.filter(
            id=expediente_materia.materia.id).first()

        dic_expediente_materia = {}
        dic_expediente_materia["num_ordem"] = expediente_materia.numero_ordem
        dic_expediente_materia["id_materia"] = (materia.tipo.sigla + ' ' +
                                                materia.tipo.descricao + ' ' +
                                                str(materia.numero) + '/' +
                                                str(materia.ano))
        dic_expediente_materia["des_numeracao"] = ' '

        numeracao = Numeracao.objects.filter(
            materia=expediente_materia.materia).first()
        if numeracao is not None:
            dic_expediente_materia["des_numeracao"] = (
                str(numeracao.numero_materia) + '/' +
                str(numeracao.ano_materia))

        turno, _ = get_turno(dic_expediente_materia, materia,
                             sessao.data_inicio)

        dic_expediente_materia["des_turno"] = turno

        dic_expediente_materia["txt_ementa"] = str(materia.ementa)
        dic_expediente_materia["ordem_observacao"] = ' '  # TODO
        dic_expediente_materia["nom_autor"] = ' '
        dic_expediente_materia["nom_resultado"] = ''

        autoria = Autoria.objects.filter(materia=materia,
                                         primeiro_autor=True).first()

        if autoria is not None:
            autor = Autor.objects.filter(id=autoria.autor.id)

            if autor is not None:
                autor = autor.first()

            if autor.tipo == 'Parlamentar':
                parlamentar = Parlamentar.objects.filter(
                    id=autor.parlamentar.id)
                dic_expediente_materia["nom_autor"] = str(
                    parlamentar.nome_completo)
            elif autor.tipo == 'Comissao':
                comissao = Comissao.objects.filter(id=autor.comissao.id)
                dic_expediente_materia["nom_autor"] = str(comissao)
            else:
                dic_expediente_materia["nom_autor"] = str(autor.nome)
        elif autoria is None:
            dic_expediente_materia["nom_autor"] = 'Desconhecido'

        dic_expediente_materia["votacao_observacao"] = ' '
        resultados = expediente_materia.registrovotacao_set.all()
        if resultados:
            for i in resultados:
                dic_expediente_materia["nom_resultado"] = (
                    i.tipo_resultado_votacao.nome)
                dic_expediente_materia["votacao_observacao"] = (i.observacao)
        else:
            dic_expediente_materia["nom_resultado"] = 'Matéria não votada'
            dic_expediente_materia["votacao_observacao"] = ' '
        lst_expediente_materia.append(dic_expediente_materia)

    # Lista dos oradores do Expediente
    lst_oradores_expediente = []
    for orador_expediente in OradorExpediente.objects.filter(
            sessao_plenaria=sessao):
        parlamentar = Parlamentar.objects.get(
            id=orador_expediente.parlamentar.id)
        dic_oradores_expediente = {}
        dic_oradores_expediente["num_ordem"] = (orador_expediente.numero_ordem)
        dic_oradores_expediente["nom_parlamentar"] = (
            parlamentar.nome_parlamentar)
        partido_sigla = Filiacao.objects.filter(
            parlamentar=parlamentar).first()
        if not partido_sigla:
            sigla = ''
        else:
            sigla = partido_sigla.partido.sigla
        dic_oradores_expediente['sgl_partido'] = sigla
        lst_oradores_expediente.append(dic_oradores_expediente)

    # Lista presença na ordem do dia
    lst_presenca_ordem_dia = []
    presenca_ordem_dia = PresencaOrdemDia.objects.filter(
        sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar')
    for parlamentar in [p.parlamentar for p in presenca_ordem_dia]:
        dic_presenca_ordem_dia = {}
        dic_presenca_ordem_dia['nom_parlamentar'] = (
            parlamentar.nome_parlamentar)
        sigla = filiacao_data(parlamentar, sessao.data_inicio)

        dic_presenca_ordem_dia['sgl_partido'] = sigla
        lst_presenca_ordem_dia.append(dic_presenca_ordem_dia)

    # Lista das matérias da Ordem do Dia, incluindo o resultado das votacoes
    lst_votacao = []
    for votacao in OrdemDia.objects.filter(sessao_plenaria=sessao):
        # seleciona os detalhes de uma matéria
        materia = MateriaLegislativa.objects.filter(
            id=votacao.materia.id).first()

        dic_votacao = {}
        dic_votacao["nom_resultado"] = ''
        dic_votacao["num_ordem"] = votacao.numero_ordem
        dic_votacao["id_materia"] = (materia.tipo.sigla + ' ' +
                                     materia.tipo.descricao + ' ' +
                                     str(materia.numero) + '/' +
                                     str(materia.ano))
        dic_votacao["des_numeracao"] = ' '

        numeracao = Numeracao.objects.filter(materia=votacao.materia).first()
        if numeracao is not None:
            dic_votacao["des_numeracao"] = (str(numeracao.numero_materia) +
                                            '/' + str(numeracao.ano_materia))

        turno, _ = get_turno(dic_votacao, materia, sessao.data_inicio)

        dic_votacao["des_turno"] = turno

        # https://github.com/interlegis/sapl/issues/1009
        dic_votacao["txt_ementa"] = html.unescape(materia.ementa)
        dic_votacao["ordem_observacao"] = html.unescape(votacao.observacao)

        dic_votacao["nom_autor"] = ' '
        autoria = Autoria.objects.filter(materia=materia,
                                         primeiro_autor=True).first()

        if autoria is not None:
            autor = Autor.objects.filter(id=autoria.autor.id)
            if autor is not None:
                autor = autor.first()

            if autor.tipo == 'Parlamentar':
                parlamentar = Parlamentar.objects.filter(
                    id=autor.parlamentar.id)
                dic_votacao["nom_autor"] = str(parlamentar.nome_completo)
            elif autor.tipo == 'Comissao':
                comissao = Comissao.objects.filter(id=autor.comissao.id)
                dic_votacao["nom_autor"] = str(comissao)
            else:
                dic_votacao["nom_autor"] = str(autor.nome)
        elif autoria is None:
            dic_votacao["nom_autor"] = 'Desconhecido'

        dic_votacao["votacao_observacao"] = ' '
        resultados = votacao.registrovotacao_set.all()
        if resultados:
            for i in resultados:
                dic_votacao["nom_resultado"] = i.tipo_resultado_votacao.nome
                if votacao.observacao:
                    dic_votacao["votacao_observacao"] = i.observacao
        else:
            dic_votacao["nom_resultado"] = "Matéria não votada"
            dic_votacao["votacao_observacao"] = " "
        lst_votacao.append(dic_votacao)

    # Lista dos oradores nas Explicações Pessoais
    lst_oradores = []
    for orador in Orador.objects.filter(sessao_plenaria=sessao):
        for parlamentar in Parlamentar.objects.filter(
                id=orador.parlamentar.id):
            dic_oradores = {}
            dic_oradores["num_ordem"] = orador.numero_ordem
            dic_oradores["nom_parlamentar"] = parlamentar.nome_parlamentar
            partido_sigla = Filiacao.objects.filter(
                parlamentar=parlamentar).first()
            if not partido_sigla:
                sigla = ''
            else:
                sigla = partido_sigla.partido.sigla
            dic_oradores['sgl_partido'] = sigla
            lst_oradores.append(dic_oradores)

    return (inf_basicas_dic, lst_mesa, lst_presenca_sessao, lst_expedientes,
            lst_expediente_materia, lst_oradores_expediente,
            lst_presenca_ordem_dia, lst_votacao, lst_oradores)
Пример #8
0
def get_sessao_plenaria(sessao, casa):

    inf_basicas_dic = {}
    inf_basicas_dic["num_sessao_plen"] = str(sessao.numero)
    inf_basicas_dic["nom_sessao"] = sessao.tipo.nome
    inf_basicas_dic["num_legislatura"] = str(sessao.legislatura)
    inf_basicas_dic["num_sessao_leg"] = sessao.sessao_legislativa.numero
    inf_basicas_dic["dat_inicio_sessao"] = sessao.data_inicio.strftime(
        "%d/%m/%Y")
    inf_basicas_dic["hr_inicio_sessao"] = sessao.hora_inicio
    if sessao.data_fim:
        inf_basicas_dic["dat_fim_sessao"] = \
            sessao.data_fim.strftime("%d/%m/%Y")
    else:
        inf_basicas_dic["dat_fim_sessao"] = ''
    inf_basicas_dic["hr_fim_sessao"] = sessao.hora_fim
    inf_basicas_dic["nom_camara"] = casa.nome

    if sessao.tipo.nome == 'Solene':
        inf_basicas_dic["tema_solene"] = sessao.tema_solene

    # Conteudo multimidia
    cont_mult_dic = {}
    if sessao.url_audio:
        cont_mult_dic['multimidia_audio'] = str(sessao.url_audio)
    else:
        cont_mult_dic['multimidia_audio'] = 'Indisponível'

    if sessao.url_video:
        cont_mult_dic['multimidia_video'] = str(sessao.url_video)
    else:
        cont_mult_dic['multimidia_video'] = 'Indisponível'

    # Lista da composicao da mesa diretora
    lst_mesa = []
    for composicao in IntegranteMesa.objects.filter(sessao_plenaria=sessao):
        for parlamentar in Parlamentar.objects.filter(
                id=composicao.parlamentar.id):
            for cargo in CargoMesa.objects.filter(id=composicao.cargo.id):
                dic_mesa = {}
                dic_mesa['nom_parlamentar'] = parlamentar.nome_parlamentar
                partido_sigla = Filiacao.objects.filter(
                    parlamentar=parlamentar).first()
                if not partido_sigla:
                    sigla = ''
                else:
                    sigla = partido_sigla.partido.sigla
                dic_mesa['sgl_partido'] = sigla
                dic_mesa['des_cargo'] = cargo.descricao
                lst_mesa.append(dic_mesa)

    # Lista de presença na sessão
    lst_presenca_sessao = []
    presenca = SessaoPlenariaPresenca.objects.filter(
        sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar')

    for parlamentar in [p.parlamentar for p in presenca]:
        dic_presenca = {}
        dic_presenca["nom_parlamentar"] = parlamentar.nome_parlamentar
        partido_sigla = filiacao_data(parlamentar, sessao.data_inicio)

        dic_presenca['sgl_partido'] = partido_sigla
        lst_presenca_sessao.append(dic_presenca)

    # Lista de ausencias na sessão
    lst_ausencia_sessao = []
    ausencia = JustificativaAusencia.objects.filter(
        sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar')
    for ausente in ausencia:
        dic_ausencia = {}
        dic_ausencia['parlamentar'] = ausente.parlamentar
        dic_ausencia['justificativa'] = ausente.tipo_ausencia
        if ausente.ausencia == 1:
            dic_ausencia['tipo'] = 'Matéria'
        else:
            dic_ausencia['tipo'] = 'Sessão'

        lst_ausencia_sessao.append(dic_ausencia)

    # Exibe os Expedientes
    lst_expedientes = []
    expedientes = ExpedienteSessao.objects.filter(
        sessao_plenaria=sessao).order_by('tipo__nome')

    for e in expedientes:
        dic_expedientes = {}
        dic_expedientes["nom_expediente"] = e.tipo.nome
        conteudo = e.conteudo

        # unescape HTML codes
        # https://github.com/interlegis/sapl/issues/1046
        conteudo = re.sub('style=".*?"', '', conteudo)
        conteudo = re.sub('class=".*?"', '', conteudo)
        conteudo = re.sub('align=".*?"', '',
                          conteudo)  # OSTicket Ticket #796450
        conteudo = re.sub('<p\s+>', '<p>', conteudo)
        conteudo = re.sub('<br\s+/>', '<br/>',
                          conteudo)  # OSTicket Ticket #796450
        conteudo = html.unescape(conteudo)

        # escape special character '&'
        #   https://github.com/interlegis/sapl/issues/1009
        conteudo = conteudo.replace('&', '&amp;')

        # https://github.com/interlegis/sapl/issues/2386
        conteudo = remove_html_comments(conteudo)

        dic_expedientes["txt_expediente"] = conteudo

        if dic_expedientes:
            lst_expedientes.append(dic_expedientes)

    # Lista das matérias do Expediente, incluindo o resultado das votacoes
    lst_expediente_materia = []
    for expediente_materia in ExpedienteMateria.objects.filter(
            sessao_plenaria=sessao):
        # seleciona os detalhes de uma matéria
        materia = expediente_materia.materia
        dic_expediente_materia = {}
        dic_expediente_materia["num_ordem"] = expediente_materia.numero_ordem
        dic_expediente_materia["id_materia"] = (materia.tipo.sigla + ' ' +
                                                materia.tipo.descricao + ' ' +
                                                str(materia.numero) + '/' +
                                                str(materia.ano))
        dic_expediente_materia["des_numeracao"] = ' '

        numeracao = Numeracao.objects.filter(
            materia=expediente_materia.materia).first()
        if numeracao:
            dic_expediente_materia["des_numeracao"] = (
                str(numeracao.numero_materia) + '/' +
                str(numeracao.ano_materia))

        turno, _ = get_turno(materia)

        dic_expediente_materia["des_turno"] = turno
        dic_expediente_materia["txt_ementa"] = str(materia.ementa)
        dic_expediente_materia[
            "ordem_observacao"] = expediente_materia.observacao
        dic_expediente_materia["nom_resultado"] = ''

        dic_expediente_materia["nom_autor"] = ''
        autoria = materia.autoria_set.all()
        dic_expediente_materia['num_autores'] = 'Autores' if len(
            autoria) > 1 else 'Autor'
        if autoria:
            for a in autoria:
                if a.autor.nome:
                    dic_expediente_materia['nom_autor'] += a.autor.nome + ', '
            dic_expediente_materia['nom_autor'] = dic_expediente_materia[
                'nom_autor'][:-2]
        else:
            dic_expediente_materia["nom_autor"] = 'Desconhecido'

        dic_expediente_materia["votacao_observacao"] = ' '
        resultados = expediente_materia.registrovotacao_set.all()
        if resultados:
            for i in resultados:
                dic_expediente_materia["nom_resultado"] = (
                    i.tipo_resultado_votacao.nome)
                dic_expediente_materia["votacao_observacao"] = (i.observacao)
        else:
            dic_expediente_materia["nom_resultado"] = 'Matéria não votada'
            dic_expediente_materia["votacao_observacao"] = ' '
        lst_expediente_materia.append(dic_expediente_materia)

    # Lista dos votos nominais das matérias do Expediente
    lst_expediente_materia_vot_nom = []

    materias_expediente_votacao_nominal = ExpedienteMateria.objects.filter(
        sessao_plenaria=sessao, tipo_votacao=2).order_by('-materia')

    for mevn in materias_expediente_votacao_nominal:
        votos_materia = []
        titulo_materia = mevn.materia
        registro = RegistroVotacao.objects.filter(expediente=mevn)

        if registro:
            for vp in VotoParlamentar.objects.filter(
                    votacao=registro).order_by('parlamentar'):
                votos_materia.append(vp)

        dic_expediente_materia_vot_nom = {
            'titulo': titulo_materia,
            'votos': votos_materia
        }
        lst_expediente_materia_vot_nom.append(dic_expediente_materia_vot_nom)

    # Lista dos oradores do Expediente
    lst_oradores_expediente = []
    for orador_expediente in OradorExpediente.objects.filter(
            sessao_plenaria=sessao).order_by('numero_ordem'):
        parlamentar = Parlamentar.objects.get(
            id=orador_expediente.parlamentar.id)
        dic_oradores_expediente = {}
        dic_oradores_expediente["num_ordem"] = (orador_expediente.numero_ordem)
        dic_oradores_expediente["nom_parlamentar"] = (
            parlamentar.nome_parlamentar)
        dic_oradores_expediente["observacao"] = (orador_expediente.observacao)
        partido_sigla = Filiacao.objects.filter(
            parlamentar=parlamentar).first()
        if not partido_sigla:
            sigla = ''
        else:
            sigla = partido_sigla.partido.sigla
        dic_oradores_expediente['sgl_partido'] = sigla
        lst_oradores_expediente.append(dic_oradores_expediente)

    # Lista presença na ordem do dia
    lst_presenca_ordem_dia = []
    presenca_ordem_dia = PresencaOrdemDia.objects.filter(
        sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar')
    for parlamentar in [p.parlamentar for p in presenca_ordem_dia]:
        dic_presenca_ordem_dia = {}
        dic_presenca_ordem_dia['nom_parlamentar'] = (
            parlamentar.nome_parlamentar)
        sigla = filiacao_data(parlamentar, sessao.data_inicio)

        dic_presenca_ordem_dia['sgl_partido'] = sigla
        lst_presenca_ordem_dia.append(dic_presenca_ordem_dia)

    # Lista das matérias da Ordem do Dia, incluindo o resultado das votacoes
    lst_votacao = []
    for votacao in OrdemDia.objects.filter(sessao_plenaria=sessao):
        # seleciona os detalhes de uma matéria
        materia = votacao.materia
        dic_votacao = {}
        dic_votacao["nom_resultado"] = ''
        dic_votacao["num_ordem"] = votacao.numero_ordem
        dic_votacao["id_materia"] = (materia.tipo.sigla + ' ' +
                                     materia.tipo.descricao + ' ' +
                                     str(materia.numero) + '/' +
                                     str(materia.ano))
        dic_votacao["des_numeracao"] = ' '

        numeracao = materia.numeracao_set.first()
        if numeracao:

            dic_votacao["des_numeracao"] = (str(numeracao.numero_materia) +
                                            '/' + str(numeracao.ano_materia))

        turno, _ = get_turno(materia)

        dic_votacao["des_turno"] = turno

        # https://github.com/interlegis/sapl/issues/1009
        dic_votacao["txt_ementa"] = html.unescape(materia.ementa)
        dic_votacao["ordem_observacao"] = html.unescape(votacao.observacao)

        dic_votacao["nom_autor"] = ''
        autoria = materia.autoria_set.all()
        dic_votacao['num_autores'] = 'Autores' if len(autoria) > 1 else 'Autor'
        if autoria:
            for a in autoria:
                if a.autor.nome:
                    dic_votacao['nom_autor'] += a.autor.nome + ', '
            dic_votacao['nom_autor'] = dic_votacao['nom_autor'][:-2]
        else:
            dic_votacao["nom_autor"] = 'Desconhecido'

        dic_votacao["votacao_observacao"] = ' '
        resultados = votacao.registrovotacao_set.all()
        if resultados:
            for i in resultados:
                dic_votacao["nom_resultado"] = i.tipo_resultado_votacao.nome
                if i.observacao:
                    dic_votacao["votacao_observacao"] = i.observacao
        else:
            dic_votacao["nom_resultado"] = "Matéria não votada"
        lst_votacao.append(dic_votacao)

    # Lista dos votos nominais das matérias da Ordem do Dia
    lst_votacao_vot_nom = []

    materias_ordem_dia_votacao_nominal = OrdemDia.objects.filter(
        sessao_plenaria=sessao, tipo_votacao=2).order_by('-materia')

    for modvn in materias_ordem_dia_votacao_nominal:
        votos_materia_od = []
        t_materia = modvn.materia
        registro_od = RegistroVotacao.objects.filter(ordem=modvn)

        if registro_od:
            for vp_od in VotoParlamentar.objects.filter(
                    votacao=registro_od).order_by('parlamentar'):
                votos_materia_od.append(vp_od)

        dic_votacao_vot_nom = {'titulo': t_materia, 'votos': votos_materia_od}
        lst_votacao_vot_nom.append(dic_votacao_vot_nom)

    # Lista dos oradores da Ordem do Dia
    lst_oradores_ordemdia = []

    oradores_ordem_dia = OradorOrdemDia.objects.filter(
        sessao_plenaria=sessao).order_by('numero_ordem')

    for orador_ordemdia in oradores_ordem_dia:
        parlamentar_orador = Parlamentar.objects.get(
            id=orador_ordemdia.parlamentar.id)

        sigla_partido = Filiacao.objects.filter(
            parlamentar=parlamentar_orador).first()

        if not sigla_partido:
            sigla_p = ""
        else:
            sigla_p = sigla_partido.partido.sigla

        dic_oradores_ordemdia = {
            'num_ordem': orador_ordemdia.numero_ordem,
            'nome_parlamentar': parlamentar_orador.nome_parlamentar,
            'observacao': orador_ordemdia.observacao,
            'sigla': sigla_p
        }
        lst_oradores_ordemdia.append(dic_oradores_ordemdia)

    # Lista dos oradores nas Explicações Pessoais
    lst_oradores = []
    for orador in Orador.objects.filter(
            sessao_plenaria=sessao).order_by('numero_ordem'):
        for parlamentar in Parlamentar.objects.filter(
                id=orador.parlamentar.id):
            dic_oradores = {}
            dic_oradores["num_ordem"] = orador.numero_ordem
            dic_oradores["nom_parlamentar"] = parlamentar.nome_parlamentar
            partido_sigla = Filiacao.objects.filter(
                parlamentar=parlamentar).first()
            if not partido_sigla:
                sigla = ''
            else:
                sigla = partido_sigla.partido.sigla
            dic_oradores['sgl_partido'] = sigla
            lst_oradores.append(dic_oradores)

    # Ocorrências da Sessão
    lst_ocorrencias = []
    ocorrencias = OcorrenciaSessao.objects.filter(sessao_plenaria=sessao)

    for o in ocorrencias:
        conteudo = o.conteudo

        # unescape HTML codes
        # https://github.com/interlegis/sapl/issues/1046
        conteudo = re.sub('style=".*?"', '', conteudo)
        conteudo = html.unescape(conteudo)

        # escape special character '&'
        #   https://github.com/interlegis/sapl/issues/1009
        conteudo = conteudo.replace('&', '&amp;')

        o.conteudo = conteudo

        lst_ocorrencias.append(o)

    return (inf_basicas_dic, cont_mult_dic, lst_mesa, lst_presenca_sessao,
            lst_ausencia_sessao, lst_expedientes, lst_expediente_materia,
            lst_expediente_materia_vot_nom, lst_oradores_expediente,
            lst_presenca_ordem_dia, lst_votacao, lst_votacao_vot_nom,
            lst_oradores_ordemdia, lst_oradores, lst_ocorrencias)
Пример #9
0
def get_presentes(pk, response, materia):
    if type(materia) == OrdemDia:
        presentes = PresencaOrdemDia.objects.filter(sessao_plenaria_id=pk)
    else:
        presentes = SessaoPlenariaPresenca.objects.filter(
            sessao_plenaria_id=pk)

    sessao = SessaoPlenaria.objects.get(id=pk)
    num_presentes = len(presentes)
    data_sessao = sessao.data_inicio

    presentes_list = []
    for p in presentes:
        now_year = timezone.now().year
        # Recupera a legislatura vigente
        legislatura = Legislatura.objects.get(data_inicio__year__lte=now_year,
                                              data_fim__year__gte=now_year)
        # Recupera os mandatos daquele parlamentar
        mandatos = p.parlamentar.mandato_set.filter(legislatura=legislatura)

        if p.parlamentar.ativo and mandatos:
            filiacao = filiacao_data(p.parlamentar, data_sessao, data_sessao)
            if not filiacao:
                partido = 'Sem Registro'
            else:
                partido = filiacao

            presentes_list.append({
                'id': p.id,
                'parlamentar_id': p.parlamentar.id,
                'nome': p.parlamentar.nome_parlamentar,
                'partido': partido,
                'voto': ''
            })

        elif not p.parlamentar.ativo or not mandatos:
            num_presentes += -1

    if materia:
        if materia.tipo_votacao == 1:
            tipo_votacao = 'Simbólica'
        elif materia.tipo_votacao == 2:
            tipo_votacao = 'Nominal'
        elif materia.tipo_votacao == 3:
            tipo_votacao = 'Secreta'

        response.update({
            'tipo_resultado': materia.resultado,
            'observacao_materia': materia.observacao,
            'tipo_votacao': tipo_votacao,
            'materia_legislativa_texto': str(materia.materia)
        })

    presentes_list = sort_lista_chave(presentes_list, 'nome')

    response.update({
        'presentes': presentes_list,
        'num_presentes': num_presentes,
        'msg_painel': str(_('Votação aberta!')),
    })

    return response