@ -498,37 +498,36 @@ def remove_html_comments(text):
return clean_text if len ( clean_text ) > 0 else text
return clean_text if len ( clean_text ) > 0 else text
def is_empty ( value ) :
if not value :
return True
txt = re . sub ( r ' \ s+|<br.*/>| \ n| ' , ' ' , value )
return True if not txt . strip ( ) else False
def get_sessao_plenaria ( sessao , casa ) :
def get_sessao_plenaria ( sessao , casa ) :
inf_basicas_dic = { }
inf_basicas_dic = {
inf_basicas_dic [ " num_sessao_plen " ] = str ( sessao . numero )
" num_sessao_plen " : str ( sessao . numero ) ,
inf_basicas_dic [ " nom_sessao " ] = sessao . tipo . nome
" nom_sessao " : sessao . tipo . nome ,
inf_basicas_dic [ " num_legislatura " ] = str ( sessao . legislatura )
" num_legislatura " : str ( sessao . legislatura ) ,
inf_basicas_dic [ " num_sessao_leg " ] = sessao . sessao_legislativa . numero
" num_sessao_leg " : sessao . sessao_legislativa . numero ,
inf_basicas_dic [ " dat_inicio_sessao " ] = sessao . data_inicio . strftime (
" dat_inicio_sessao " : sessao . data_inicio . strftime ( " %d / % m/ % Y " ) ,
" %d / % m/ % Y " )
" hr_inicio_sessao " : sessao . hora_inicio ,
inf_basicas_dic [ " hr_inicio_sessao " ] = sessao . hora_inicio
" dat_fim_sessao " : sessao . data_fim . strftime ( " %d / % m/ % Y " ) if sessao . data_fim else ' ' ,
if sessao . data_fim :
" hr_fim_sessao " : sessao . hora_fim ,
inf_basicas_dic [ " dat_fim_sessao " ] = \
" nom_camara " : casa . nome
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 ' :
if sessao . tipo . nome == ' Solene ' :
inf_basicas_dic [ " tema_solene " ] = sessao . tema_solene
inf_basicas_dic [ " tema_solene " ] = sessao . tema_solene
# Conteudo multimidia
# Conteudo multimidia
cont_mult_dic = { }
cont_mult_dic = {
if sessao . url_audio :
" multimidia_audio " : str ( sessao . url_audio ) if sessao . url_audio else " Indisponível " ,
cont_mult_dic [ ' multimidia_audio ' ] = str ( sessao . url_audio )
" multimidia_video " : str ( sessao . url_video ) if sessao . url_video else " Indisponível "
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
# Lista da composicao da mesa diretora
lst_mesa = [ ]
lst_mesa = [ ]
@ -537,51 +536,37 @@ def get_sessao_plenaria(sessao, casa):
. order_by ( ' cargo_id ' ) :
. order_by ( ' cargo_id ' ) :
partido_sigla = Filiacao . objects . filter ( parlamentar = composicao . parlamentar ) . first ( )
partido_sigla = Filiacao . objects . filter ( parlamentar = composicao . parlamentar ) . first ( )
sigla = ' ' if not partido_sigla else partido_sigla . partido . sigla
sigla = ' ' if not partido_sigla else partido_sigla . partido . sigla
dic_mesa = {
lst_mesa . append ( {
' nom_parlamentar ' : composicao . parlamentar . nome_parlamentar ,
' nom_parlamentar ' : composicao . parlamentar . nome_parlamentar ,
' sgl_partido ' : sigla ,
' sgl_partido ' : sigla ,
' des_cargo ' : composicao . cargo . descricao
' des_cargo ' : composicao . cargo . descricao
}
} )
lst_mesa . append ( dic_mesa )
# Lista de presença na sessão
# Lista de presença na sessão
lst_presenca_sessao = [ ]
lst_presenca_sessao = [ ]
presenca = SessaoPlenariaPresenca . objects . filter (
presenca = SessaoPlenariaPresenca . objects . filter ( sessao_plenaria = sessao ) . order_by ( ' parlamentar__nome_parlamentar ' )
sessao_plenaria = sessao ) . order_by ( ' parlamentar__nome_parlamentar ' )
for parlamentar in [ p . parlamentar for p in presenca ] :
for parlamentar in [ p . parlamentar for p in presenca ] :
dic_presenca = { }
lst_presenca_sessao . append ( {
dic_presenca [ " nom_parlamentar " ] = parlamentar . nome_parlamentar
" nom_parlamentar " : parlamentar . nome_parlamentar ,
partido_sigla = filiacao_data ( parlamentar , sessao . data_inicio )
" sgl_partido " : filiacao_data ( parlamentar , sessao . data_inicio )
} )
dic_presenca [ ' sgl_partido ' ] = partido_sigla
lst_presenca_sessao . append ( dic_presenca )
# Lista de ausencias na sessão
# Lista de ausencias na sessão
lst_ausencia_sessao = [ ]
lst_ausencia_sessao = [ ]
ausencia = JustificativaAusencia . objects . filter (
ausencia = JustificativaAusencia . objects . filter ( sessao_plenaria = sessao ) . order_by ( ' parlamentar__nome_parlamentar ' )
sessao_plenaria = sessao ) . order_by ( ' parlamentar__nome_parlamentar ' )
for ausente in ausencia :
for ausente in ausencia :
dic_ausencia = { }
lst_ausencia_sessao . append ( {
dic_ausencia [ ' parlamentar ' ] = ausente . parlamentar
" parlamentar " : ausente . parlamentar ,
dic_ausencia [ ' justificativa ' ] = ausente . tipo_ausencia
" justificativa " : ausente . tipo_ausencia ,
if ausente . ausencia == 1 :
" tipo " : " Matéria " if ausente . ausencia == 1 else " Sessão "
dic_ausencia [ ' tipo ' ] = ' Matéria '
} )
else :
dic_ausencia [ ' tipo ' ] = ' Sessão '
lst_ausencia_sessao . append ( dic_ausencia )
# Exibe os Expedientes
# Exibe os Expedientes
lst_expedientes = [ ]
lst_expedientes = [ ]
expedientes = ExpedienteSessao . objects . filter (
expedientes = ExpedienteSessao . objects . filter ( sessao_plenaria = sessao ) . order_by ( ' tipo__nome ' )
sessao_plenaria = sessao ) . order_by ( ' tipo__nome ' )
for e in expedientes :
for e in expedientes :
dic_expedientes = { }
dic_expedientes [ " nom_expediente " ] = e . tipo . nome
conteudo = e . conteudo
conteudo = e . conteudo
if not is_empty ( conteudo ) :
# unescape HTML codes
# unescape HTML codes
# https://github.com/interlegis/sapl/issues/1046
# https://github.com/interlegis/sapl/issues/1046
conteudo = re . sub ( ' style= " .*? " ' , ' ' , conteudo )
conteudo = re . sub ( ' style= " .*? " ' , ' ' , conteudo )
@ -598,43 +583,37 @@ def get_sessao_plenaria(sessao, casa):
# https://github.com/interlegis/sapl/issues/2386
# https://github.com/interlegis/sapl/issues/2386
conteudo = remove_html_comments ( conteudo )
conteudo = remove_html_comments ( conteudo )
dic_expedientes [ " txt_expediente " ] = conteudo
dic_expedientes = {
" nom_expediente " : e . tipo . nome ,
" txt_expediente " : conteudo
}
if dic_expedientes :
lst_expedientes . append ( dic_expedientes )
lst_expedientes . append ( dic_expedientes )
# Lista das matérias do Expediente, incluindo o resultado das votacoes
# Lista das matérias do Expediente, incluindo o resultado das votacoes
lst_expediente_materia = [ ]
lst_expediente_materia = [ ]
for expediente_materia in ExpedienteMateria . objects . filter (
for expediente_materia in ExpedienteMateria . objects . filter ( sessao_plenaria = sessao ) :
sessao_plenaria = sessao ) :
# seleciona os detalhes de uma matéria
# seleciona os detalhes de uma matéria
materia = expediente_materia . materia
materia = expediente_materia . materia
dic_expediente_materia = { }
dic_expediente_materia = {
dic_expediente_materia [ " num_ordem " ] = expediente_materia . numero_ordem
" num_ordem " : expediente_materia . numero_ordem ,
dic_expediente_materia [ " id_materia " ] = ( materia . tipo . sigla + ' ' +
" id_materia " : " {} {} {} / {} " . format ( materia . tipo . sigla , materia . tipo . descricao , str ( materia . numero ) ,
materia . tipo . descricao + ' ' +
str ( materia . ano ) ) ,
str ( materia . numero ) + ' / ' +
" des_numeracao " : ' ' ,
str ( materia . ano ) )
" des_turno " : get_turno ( materia ) [ 0 ] ,
dic_expediente_materia [ " des_numeracao " ] = ' '
" txt_ementa " : str ( materia . ementa ) ,
" ordem_observacao " : expediente_materia . observacao ,
" nom_resultado " : ' ' ,
" nom_autor " : ' ' ,
" votacao_observacao " : ' '
}
numeracao = Numeracao . objects . filter (
numeracao = Numeracao . objects . filter ( materia = expediente_materia . materia ) . first ( )
materia = expediente_materia . materia ) . first ( )
if numeracao :
if numeracao :
dic_expediente_materia [ " des_numeracao " ] = (
dic_expediente_materia [ " des_numeracao " ] = ( str ( numeracao . numero_materia ) + ' / ' + str ( numeracao . ano_materia ) )
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 ( )
autoria = materia . autoria_set . all ( )
dic_expediente_materia [ ' num_autores ' ] = ' Autores ' if len (
dic_expediente_materia [ ' num_autores ' ] = ' Autores ' if len ( autoria ) > 1 else ' Autor '
autoria ) > 1 else ' Autor '
if autoria :
if autoria :
for a in autoria :
for a in autoria :
if a . autor . nome :
if a . autor . nome :
@ -643,25 +622,25 @@ def get_sessao_plenaria(sessao, casa):
else :
else :
dic_expediente_materia [ " nom_autor " ] = ' Desconhecido '
dic_expediente_materia [ " nom_autor " ] = ' Desconhecido '
dic_expediente_materia [ " votacao_observacao " ] = ' '
resultados = expediente_materia . registrovotacao_set . all ( )
resultados = expediente_materia . registrovotacao_set . all ( )
if resultados :
if resultados :
for i in resultados :
for i in resultados :
dic_expediente_materia [ " nom_resultado " ] = (
dic_expediente_materia . update ( {
i . tipo_resultado_votacao . nome )
" nom_resultado " : i . tipo_resultado_votacao . nome ,
dic_expediente_materia [ " votacao_observacao " ] = (
" votacao_observacao " : i . observacao
i . observacao )
} )
else :
else :
dic_expediente_materia [ " nom_resultado " ] = ' Matéria não votada '
dic_expediente_materia . update ( {
dic_expediente_materia [ " votacao_observacao " ] = ' '
" nom_resultado " : ' Matéria não votada ' ,
" votacao_observacao " : ' '
} )
lst_expediente_materia . append ( dic_expediente_materia )
lst_expediente_materia . append ( dic_expediente_materia )
# Lista dos votos nominais das matérias do Expediente
# Lista dos votos nominais das matérias do Expediente
lst_expediente_materia_vot_nom = [ ]
lst_expediente_materia_vot_nom = [ ]
materias_expediente_votacao_nominal = ExpedienteMateria . objects . filter (
materias_expediente_votacao_nominal = ExpedienteMateria . objects . filter ( sessao_plenaria = sessao , tipo_votacao = 2 ) \
sessao_plenaria = sessao ,
. order_by ( ' -materia ' )
tipo_votacao = 2 ) . order_by ( ' -materia ' )
for mevn in materias_expediente_votacao_nominal :
for mevn in materias_expediente_votacao_nominal :
votos_materia = [ ]
votos_materia = [ ]
@ -672,79 +651,61 @@ def get_sessao_plenaria(sessao, casa):
for vp in VotoParlamentar . objects . filter ( votacao = registro ) . order_by ( ' parlamentar ' ) :
for vp in VotoParlamentar . objects . filter ( votacao = registro ) . order_by ( ' parlamentar ' ) :
votos_materia . append ( vp )
votos_materia . append ( vp )
dic_expediente_materia_vot_nom = {
lst_expediente_materia_vot_nom . append ( {
' titulo ' : titulo_materia ,
" titulo " : titulo_materia ,
' votos ' : votos_materia
" votos " : votos_materia
}
} )
lst_expediente_materia_vot_nom . append ( dic_expediente_materia_vot_nom )
# Lista dos oradores do Expediente
# Lista dos oradores do Expediente
lst_oradores_expediente = [ ]
lst_oradores_expediente = [ ]
for orador_expediente in OradorExpediente . objects . filter (
for orador_expediente in OradorExpediente . objects . filter ( sessao_plenaria = sessao ) . order_by ( ' numero_ordem ' ) :
sessao_plenaria = sessao ) . order_by ( ' numero_ordem ' ) :
parlamentar = Parlamentar . objects . get ( id = orador_expediente . parlamentar . id )
parlamentar = Parlamentar . objects . get (
partido_sigla = Filiacao . objects . filter ( parlamentar = parlamentar ) . first ( )
id = orador_expediente . parlamentar . id )
lst_oradores_expediente . append ( {
dic_oradores_expediente = { }
" num_ordem " : orador_expediente . numero_ordem ,
dic_oradores_expediente [ " num_ordem " ] = (
" nom_parlamentar " : parlamentar . nome_parlamentar ,
orador_expediente . numero_ordem )
" observacao " : orador_expediente . observacao ,
dic_oradores_expediente [ " nom_parlamentar " ] = (
" sgl_partido " : " " if not partido_sigla else partido_sigla . partido . sigla
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
# Lista presença na ordem do dia
lst_presenca_ordem_dia = [ ]
lst_presenca_ordem_dia = [ ]
presenca_ordem_dia = PresencaOrdemDia . objects . filter (
presenca_ordem_dia = PresencaOrdemDia . objects . filter ( sessao_plenaria = sessao ) \
sessao_plenaria = sessao ) . order_by ( ' parlamentar__nome_parlamentar ' )
. order_by ( ' parlamentar__nome_parlamentar ' )
for parlamentar in [ p . parlamentar for p in presenca_ordem_dia ] :
for parlamentar in [ p . parlamentar for p in presenca_ordem_dia ] :
dic_presenca_ordem_dia = { }
lst_presenca_ordem_dia . append ( {
dic_presenca_ordem_dia [ ' nom_parlamentar ' ] = (
" nom_parlamentar " : parlamentar . nome_parlamentar ,
parlamentar . nome_parlamentar )
" sgl_partido " : filiacao_data ( parlamentar , sessao . data_inicio )
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
# Lista das matérias da Ordem do Dia, incluindo o resultado das votacoes
lst_votacao = [ ]
lst_votacao = [ ]
for votacao in OrdemDia . objects . filter (
for votacao in OrdemDia . objects . filter ( sessao_plenaria = sessao ) :
sessao_plenaria = sessao ) :
# seleciona os detalhes de uma matéria
# seleciona os detalhes de uma matéria
materia = votacao . materia
materia = votacao . materia
dic_votacao = { }
dic_votacao = {
dic_votacao [ " nom_resultado " ] = ' '
" nom_resultado " : ' ' ,
dic_votacao [ " num_ordem " ] = votacao . numero_ordem
" num_ordem " : votacao . numero_ordem ,
dic_votacao [ " id_materia " ] = (
" id_materia " : (
materia . tipo . sigla + ' ' +
materia . tipo . sigla + ' ' +
materia . tipo . descricao + ' ' +
materia . tipo . descricao + ' ' +
str ( materia . numero ) + ' / ' +
str ( materia . numero ) + ' / ' +
str ( materia . ano ) )
str ( materia . ano ) ) ,
dic_votacao [ " des_numeracao " ] = ' '
" des_numeracao " : ' '
}
numeracao = materia . numeracao_set . first ( )
numeracao = materia . numeracao_set . first ( )
if numeracao :
if numeracao :
dic_votacao [ " des_numeracao " ] = (
dic_votacao [ " des_numeracao " ] = ( str ( numeracao . numero_materia ) + ' / ' + str ( numeracao . ano_materia ) )
str ( numeracao . numero_materia ) +
' / ' +
str ( numeracao . ano_materia ) )
turno , _ = get_turno ( materia )
dic_votacao [ " des_turno " ] = turno
dic_votacao . update ( {
" des_turno " : get_turno ( materia ) [ 0 ] ,
# https://github.com/interlegis/sapl/issues/1009
# https://github.com/interlegis/sapl/issues/1009
dic_votacao [ " txt_ementa " ] = html . unescape ( materia . ementa )
" txt_ementa " : html . unescape ( materia . ementa ) ,
dic_votacao [ " ordem_observacao " ] = html . unescape ( votacao . observacao )
" ordem_observacao " : html . unescape ( votacao . observacao ) ,
" nom_autor " : ' '
} )
dic_votacao [ " nom_autor " ] = ' '
autoria = materia . autoria_set . all ( )
autoria = materia . autoria_set . all ( )
dic_votacao [ ' num_autores ' ] = ' Autores ' if len ( autoria ) > 1 else ' Autor '
dic_votacao [ ' num_autores ' ] = ' Autores ' if len ( autoria ) > 1 else ' Autor '
if autoria :
if autoria :
@ -769,9 +730,8 @@ def get_sessao_plenaria(sessao, casa):
# Lista dos votos nominais das matérias da Ordem do Dia
# Lista dos votos nominais das matérias da Ordem do Dia
lst_votacao_vot_nom = [ ]
lst_votacao_vot_nom = [ ]
materias_ordem_dia_votacao_nominal = OrdemDia . objects . filter (
materias_ordem_dia_votacao_nominal = OrdemDia . objects . filter ( sessao_plenaria = sessao , tipo_votacao = 2 ) \
sessao_plenaria = sessao ,
. order_by ( ' -materia ' )
tipo_votacao = 2 ) . order_by ( ' -materia ' )
for modvn in materias_ordem_dia_votacao_nominal :
for modvn in materias_ordem_dia_votacao_nominal :
votos_materia_od = [ ]
votos_materia_od = [ ]
@ -782,63 +742,41 @@ def get_sessao_plenaria(sessao, casa):
for vp_od in VotoParlamentar . objects . filter ( votacao = registro_od ) . order_by ( ' parlamentar ' ) :
for vp_od in VotoParlamentar . objects . filter ( votacao = registro_od ) . order_by ( ' parlamentar ' ) :
votos_materia_od . append ( vp_od )
votos_materia_od . append ( vp_od )
dic_votacao_vot_nom = {
lst_votacao_vot_nom . append ( {
' titulo ' : t_materia ,
" titulo " : t_materia ,
' votos ' : votos_materia_od
" votos " : votos_materia_od
}
} )
lst_votacao_vot_nom . append ( dic_votacao_vot_nom )
# Lista dos oradores da Ordem do Dia
# Lista dos oradores da Ordem do Dia
lst_oradores_ordemdia = [ ]
lst_oradores_ordemdia = [ ]
oradores_ordem_dia = OradorOrdemDia . objects . filter (
oradores_ordem_dia = OradorOrdemDia . objects . filter ( sessao_plenaria = sessao ) . order_by ( ' numero_ordem ' )
sessao_plenaria = sessao
) . order_by ( ' numero_ordem ' )
for orador_ordemdia in oradores_ordem_dia :
for orador_ordemdia in oradores_ordem_dia :
parlamentar_orador = Parlamentar . objects . get (
parlamentar_orador = Parlamentar . objects . get ( id = orador_ordemdia . parlamentar . id )
id = orador_ordemdia . parlamentar . id
sigla_partido = Filiacao . objects . filter ( parlamentar = parlamentar_orador ) . first ( )
)
lst_oradores_ordemdia . append ( {
sigla_partido = Filiacao . objects . filter (
" num_ordem " : orador_ordemdia . numero_ordem ,
parlamentar = parlamentar_orador
" nome_parlamentar " : parlamentar_orador . nome_parlamentar ,
) . first ( )
" observacao " : orador_ordemdia . observacao ,
" sigla " : " " if not sigla_partido else sigla_partido . partido . sigla
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
# Lista dos oradores nas Explicações Pessoais
lst_oradores = [ ]
lst_oradores = [ ]
for orador in Orador . objects . filter (
for orador in Orador . objects . select_related ( ' parlamentar ' ) . filter ( sessao_plenaria = sessao ) . order_by ( ' numero_ordem ' ) :
sessao_plenaria = sessao ) . order_by ( ' numero_ordem ' ) :
parlamentar = orador . parlamentar
for parlamentar in Parlamentar . objects . filter (
partido_sigla = orador . parlamentar . filiacao_set . select_related ( ' partido ' , ' parlamentar ' ) . first ( )
id = orador . parlamentar . id ) :
lst_oradores . append ( {
dic_oradores = { }
" num_ordem " : orador . numero_ordem ,
dic_oradores [ " num_ordem " ] = orador . numero_ordem
" nom_parlamentar " : parlamentar . nome_parlamentar ,
dic_oradores [ " nom_parlamentar " ] = parlamentar . nome_parlamentar
" sgl_partido " : " " if not partido_sigla else partido_sigla . partido . sigla
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
# Ocorrências da Sessão
lst_ocorrencias = [ ]
lst_ocorrencias = [ ]
ocorrencias = OcorrenciaSessao . objects . filter (
ocorrencias = OcorrenciaSessao . objects . filter ( sessao_plenaria = sessao )
sessao_plenaria = sessao )
for o in ocorrencias :
for o in ocorrencias :
conteudo = o . conteudo
conteudo = o . conteudo