@ -4,7 +4,6 @@ import logging
import re
import re
import tempfile
import tempfile
from django . core . exceptions import ObjectDoesNotExist
from django . core . exceptions import ObjectDoesNotExist
from django . http import Http404 , HttpResponse
from django . http import Http404 , HttpResponse
from django . utils import timezone
from django . utils import timezone
@ -25,7 +24,7 @@ from sapl.sessao.models import (ExpedienteMateria, ExpedienteSessao,
Orador , OradorExpediente ,
Orador , OradorExpediente ,
OrdemDia , PresencaOrdemDia , SessaoPlenaria ,
OrdemDia , PresencaOrdemDia , SessaoPlenaria ,
SessaoPlenariaPresenca , OcorrenciaSessao ,
SessaoPlenariaPresenca , OcorrenciaSessao ,
RegistroVotacao , VotoParlamentar , OradorOrdemDia , TipoExpediente )
RegistroVotacao , VotoParlamentar , OradorOrdemDia , TipoExpediente , ResumoOrdenacao )
from sapl . settings import STATIC_ROOT
from sapl . settings import STATIC_ROOT
from sapl . utils import LISTA_DE_UFS , TrocaTag , filiacao_data
from sapl . utils import LISTA_DE_UFS , TrocaTag , filiacao_data
@ -58,7 +57,6 @@ def get_kwargs_params(request, fields):
def get_cabecalho ( casa ) :
def get_cabecalho ( casa ) :
cabecalho = { }
cabecalho = { }
cabecalho [ " nom_casa " ] = casa . nome
cabecalho [ " nom_casa " ] = casa . nome
uf_dict = dict ( LISTA_DE_UFS )
uf_dict = dict ( LISTA_DE_UFS )
@ -74,7 +72,6 @@ def get_imagem(casa):
def get_rodape ( casa ) :
def get_rodape ( casa ) :
if len ( casa . cep ) == 8 :
if len ( casa . cep ) == 8 :
cep = casa . cep [ : 4 ] + " - " + casa . cep [ 5 : ]
cep = casa . cep [ : 4 ] + " - " + casa . cep [ 5 : ]
else :
else :
@ -110,7 +107,6 @@ def get_rodape(casa):
def get_materias ( mats ) :
def get_materias ( mats ) :
materias = [ ]
materias = [ ]
for materia in mats :
for materia in mats :
dic = { }
dic = { }
@ -294,7 +290,6 @@ def relatorio_capa_processo(request):
def get_ordem_dia ( ordem , sessao ) :
def get_ordem_dia ( ordem , sessao ) :
# TODO: fazer implementação de ordem dia
# TODO: fazer implementação de ordem dia
pass
pass
@ -361,7 +356,6 @@ def relatorio_documento_administrativo(request):
def get_documento_administrativo ( docs ) :
def get_documento_administrativo ( docs ) :
documentos = [ ]
documentos = [ ]
for d in docs :
for d in docs :
dic = { }
dic = { }
@ -505,7 +499,6 @@ def remove_html_comments(text):
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 )
inf_basicas_dic [ " num_sessao_plen " ] = str ( sessao . numero )
inf_basicas_dic [ " nom_sessao " ] = sessao . tipo . nome
inf_basicas_dic [ " nom_sessao " ] = sessao . tipo . nome
@ -742,7 +735,6 @@ def get_sessao_plenaria(sessao, casa):
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 . numero_materia ) +
' / ' +
' / ' +
@ -973,7 +965,6 @@ def relatorio_sessao_plenaria(request, pk):
def get_protocolos ( prots ) :
def get_protocolos ( prots ) :
protocolos = [ ]
protocolos = [ ]
for protocolo in prots :
for protocolo in prots :
dic = { }
dic = { }
@ -1090,7 +1081,6 @@ def relatorio_etiqueta_protocolo(request, nro, ano):
def get_etiqueta_protocolos ( prots ) :
def get_etiqueta_protocolos ( prots ) :
protocolos = [ ]
protocolos = [ ]
for p in prots :
for p in prots :
dic = { }
dic = { }
@ -1172,7 +1162,6 @@ def relatorio_pauta_sessao(request, pk):
def get_pauta_sessao ( sessao , casa ) :
def get_pauta_sessao ( sessao , casa ) :
inf_basicas_dic = { }
inf_basicas_dic = { }
inf_basicas_dic [ " nom_sessao " ] = sessao . tipo . nome
inf_basicas_dic [ " nom_sessao " ] = sessao . tipo . nome
inf_basicas_dic [ " num_sessao_plen " ] = sessao . numero
inf_basicas_dic [ " num_sessao_plen " ] = sessao . numero
@ -1280,7 +1269,8 @@ def get_pauta_sessao(sessao, casa):
inf_basicas_dic ,
inf_basicas_dic ,
expedientes )
expedientes )
def make_pdf ( base_url , main_template , header_template , main_css = ' ' , header_css = ' ' ) :
def make_pdf ( base_url , main_template , header_template , main_css = ' ' , header_css = ' ' ) :
html = HTML ( base_url = base_url , string = main_template )
html = HTML ( base_url = base_url , string = main_template )
main_doc = html . render ( stylesheets = [ ] )
main_doc = html . render ( stylesheets = [ ] )
@ -1291,7 +1281,7 @@ def make_pdf(base_url,main_template,header_template,main_css='',header_css=''):
return get_page_body ( box . all_children ( ) )
return get_page_body ( box . all_children ( ) )
# Template of header
# Template of header
html = HTML ( base_url = base_url , string = header_template )
html = HTML ( base_url = base_url , string = header_template )
header = html . render ( stylesheets = [ CSS ( string = ' @page { size:A4; margin:1cm;} ' ) ] )
header = html . render ( stylesheets = [ CSS ( string = ' @page { size:A4; margin:1cm;} ' ) ] )
header_page = header . pages [ 0 ]
header_page = header . pages [ 0 ]
@ -1307,7 +1297,7 @@ def make_pdf(base_url,main_template,header_template,main_css='',header_css=''):
return pdf_file
return pdf_file
def resumo_ata_pdf ( request , pk ) :
def resumo_ata_pdf ( request , pk ) :
base_url = request . build_absolute_uri ( )
base_url = request . build_absolute_uri ( )
casa = CasaLegislativa . objects . first ( )
casa = CasaLegislativa . objects . first ( )
rodape = ' ' . join ( get_rodape ( casa ) )
rodape = ' ' . join ( get_rodape ( casa ) )
@ -1330,12 +1320,12 @@ def resumo_ata_pdf(request,pk):
context . update ( { ' object ' : sessao_plenaria } )
context . update ( { ' object ' : sessao_plenaria } )
context . update ( { ' data ' : dt . today ( ) . strftime ( ' %d / % m/ % Y ' ) } )
context . update ( { ' data ' : dt . today ( ) . strftime ( ' %d / % m/ % Y ' ) } )
context . update ( { ' rodape ' : rodape } )
context . update ( { ' rodape ' : rodape } )
header_context = { " casa " : casa , ' logotipo ' : casa . logotipo , ' MEDIA_URL ' : MEDIA_URL }
header_context = { " casa " : casa , ' logotipo ' : casa . logotipo , ' MEDIA_URL ' : MEDIA_URL }
html_template = render_to_string ( ' relatorios/relatorio_ata.html ' , context )
html_template = render_to_string ( ' relatorios/relatorio_ata.html ' , context )
html_header = render_to_string ( ' relatorios/header_ata.html ' , header_context )
html_header = render_to_string ( ' relatorios/header_ata.html ' , header_context )
pdf_file = make_pdf ( base_url = base_url , main_template = html_template , header_template = html_header )
pdf_file = make_pdf ( base_url = base_url , main_template = html_template , header_template = html_header )
response = HttpResponse ( content_type = ' application/pdf; ' )
response = HttpResponse ( content_type = ' application/pdf; ' )
response [ ' Content-Disposition ' ] = ' inline; filename=relatorio.pdf '
response [ ' Content-Disposition ' ] = ' inline; filename=relatorio.pdf '
@ -1344,6 +1334,7 @@ def resumo_ata_pdf(request,pk):
return response
return response
def cria_relatorio ( request , context , html_string , header_info = " " ) :
def cria_relatorio ( request , context , html_string , header_info = " " ) :
base_url = request . build_absolute_uri ( )
base_url = request . build_absolute_uri ( )
casa = CasaLegislativa . objects . first ( )
casa = CasaLegislativa . objects . first ( )
@ -1366,62 +1357,80 @@ def cria_relatorio(request, context, html_string, header_info=""):
return response
return response
def relatorio_doc_administrativos ( request , context ) :
def relatorio_doc_administrativos ( request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_doc_administrativos.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_doc_administrativos.html ' )
def relatorio_materia_em_tramitacao ( obj , request , context ) :
def relatorio_materia_em_tramitacao ( obj , request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_materias_em_tramitacao.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_materias_em_tramitacao.html ' )
def relatorio_materia_por_autor ( obj , request , context ) :
def relatorio_materia_por_autor ( obj , request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_materias_por_autor.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_materias_por_autor.html ' )
def relatorio_materia_por_ano_autor ( obj , request , context ) :
def relatorio_materia_por_ano_autor ( obj , request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_materias_por_ano_autor.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_materias_por_ano_autor.html ' )
def relatorio_presenca_sessao ( obj , request , context ) :
def relatorio_presenca_sessao ( obj , request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_presenca_sessao.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_presenca_sessao.html ' )
def relatorio_atas ( obj , request , context ) :
def relatorio_atas ( obj , request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_atas.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_atas.html ' )
def relatorio_historico_tramitacao ( obj , request , context ) :
def relatorio_historico_tramitacao ( obj , request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_historico_tramitacao.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_historico_tramitacao.html ' )
def relatorio_fim_prazo_tramitacao ( obj , request , context ) :
def relatorio_fim_prazo_tramitacao ( obj , request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_fim_prazo_tramitacao.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_fim_prazo_tramitacao.html ' )
def relatorio_reuniao ( obj , request , context ) :
def relatorio_reuniao ( obj , request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_reuniao.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_reuniao.html ' )
def relatorio_audiencia ( obj , request , context ) :
def relatorio_audiencia ( obj , request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_audiencia.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_audiencia.html ' )
def relatorio_normas_mes ( obj , request , context ) :
def relatorio_normas_mes ( obj , request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_normas_mes.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_normas_mes.html ' )
def relatorio_normas_vigencia ( obj , request , context ) :
def relatorio_normas_vigencia ( obj , request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_normas_vigencia.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_normas_vigencia.html ' )
def relatorio_historico_tramitacao_adm ( obj , request , context ) :
def relatorio_historico_tramitacao_adm ( obj , request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_historico_tramitacao_adm.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_historico_tramitacao_adm.html ' )
def relatorio_estatisticas_acesso_normas ( obj , request , context ) :
def relatorio_estatisticas_acesso_normas ( obj , request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_estatisticas_acesso_normas.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_estatisticas_acesso_normas.html ' )
def relatorio_documento_acessorio ( obj , request , context ) :
def relatorio_documento_acessorio ( obj , request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_documento_acessorio.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_documento_acessorio.html ' )
def relatorio_normas_por_autor ( obj , request , context ) :
def relatorio_normas_por_autor ( obj , request , context ) :
return cria_relatorio ( request , context , ' relatorios/relatorio_normas_por_autor.html ' )
return cria_relatorio ( request , context , ' relatorios/relatorio_normas_por_autor.html ' )
def relatorio_pauta_sessao_weasy ( obj , request , context ) :
def relatorio_pauta_sessao_weasy ( obj , request , context ) :
sessao = context [ ' object ' ]
sessao = context [ ' object ' ]
info = " Pauta da {} ( {} - {} ) Legislatura " . format ( sessao , sessao . legislatura . data_inicio . year , sessao . legislatura . data_fim . year )
info = " Pauta da {} ( {} - {} ) Legislatura " . format ( sessao , sessao . legislatura . data_inicio . year ,
return cria_relatorio ( request , context , ' relatorios/relatorio_pauta_sessao.html ' , info )
sessao . legislatura . data_fim . year )
return cria_relatorio ( request , context , ' relatorios/relatorio_pauta_sessao.html ' , info )
def relatorio_sessao_plenaria_pdf ( request , pk ) :
def relatorio_sessao_plenaria_pdf ( request , pk ) :
base_url = request . build_absolute_uri ( )
base_url = request . build_absolute_uri ( )
logger = logging . getLogger ( __name__ )
logger = logging . getLogger ( __name__ )
username = request . user . username
username = request . user . username
casa = CasaLegislativa . objects . first ( )
casa = CasaLegislativa . objects . first ( )
@ -1456,23 +1465,83 @@ def relatorio_sessao_plenaria_pdf(request, pk):
lst_oradores ,
lst_oradores ,
lst_ocorrencias ) = get_sessao_plenaria ( sessao , casa )
lst_ocorrencias ) = get_sessao_plenaria ( sessao , casa )
html_template = render_to_string ( ' relatorios/relatorio_sessao_plenaria.html ' ,
dict_ord_template = {
{
' cont_mult ' : ' conteudo_multimidia.html ' ,
" inf_basicas_dic " : inf_basicas_dic ,
' exp ' : ' expedientes.html ' ,
" lst_mesa " : lst_mesa ,
' id_basica ' : ' identificacao_basica.html ' ,
" lst_presenca_sessao " : lst_presenca_sessao ,
' lista_p ' : ' lista_presenca_sessao.html ' ,
" lst_ausencia_sessao " : lst_ausencia_sessao ,
' lista_p_o_d ' : ' lista_presenca_ordemdia.html ' ,
" lst_expedientes " : lst_expedientes ,
' mat_exp ' : ' materias_expediente.html ' ,
" lst_expediente_materia " : lst_expediente_materia ,
' v_n_mat_exp ' : ' votos_nominais_expediente.html ' ,
" lst_oradores_expediente " : lst_oradores_expediente ,
' mat_o_d ' : ' materias_ordemdia.html ' ,
" lst_presenca_ordem_dia " : lst_presenca_ordem_dia ,
' v_n_mat_o_d ' : ' votos_nominais_ordemdia.html ' ,
" lst_votacao " : lst_votacao ,
' mesa_d ' : ' mesa_diretora.html ' ,
" lst_oradores " : lst_oradores ,
' oradores_exped ' : ' oradores_expediente.html ' ,
" lst_ocorrencias " : lst_ocorrencias ,
' oradores_o_d ' : ' oradores_ordemdia.html ' ,
" rodape " : rodape ,
' oradores_expli ' : ' oradores_explicacoes.html ' ,
' ocorr_sessao ' : ' ocorrencias_sessao.html '
}
context = {
" inf_basicas_dic " : inf_basicas_dic ,
" cont_mult_dic " : cont_mult_dic ,
" lst_mesa " : lst_mesa ,
" lst_expediente_materia_vot_nom " : lst_expediente_materia_vot_nom ,
" lst_presenca_sessao " : lst_presenca_sessao ,
" lst_ausencia_sessao " : lst_ausencia_sessao ,
" lst_expedientes " : lst_expedientes ,
" lst_expediente_materia " : lst_expediente_materia ,
" lst_oradores_expediente " : lst_oradores_expediente ,
" lst_presenca_ordem_dia " : lst_presenca_ordem_dia ,
" lst_votacao " : lst_votacao ,
" lst_oradores_ordemdia " : lst_oradores_ordemdia ,
" lst_votacao_vot_nom " : lst_votacao_vot_nom ,
" lst_oradores " : lst_oradores ,
" lst_ocorrencias " : lst_ocorrencias ,
" rodape " : rodape ,
" data " : dt . today ( ) . strftime ( ' %d / % m/ % Y ' )
" data " : dt . today ( ) . strftime ( ' %d / % m/ % Y ' )
}
ordenacao = ResumoOrdenacao . objects . get_or_create ( ) [ 0 ]
try :
context . update ( {
' primeiro_ordenacao ' : dict_ord_template [ ordenacao . primeiro ] ,
' segundo_ordenacao ' : dict_ord_template [ ordenacao . segundo ] ,
' terceiro_ordenacao ' : dict_ord_template [ ordenacao . terceiro ] ,
' quarto_ordenacao ' : dict_ord_template [ ordenacao . quarto ] ,
' quinto_ordenacao ' : dict_ord_template [ ordenacao . quinto ] ,
' sexto_ordenacao ' : dict_ord_template [ ordenacao . sexto ] ,
' setimo_ordenacao ' : dict_ord_template [ ordenacao . setimo ] ,
' oitavo_ordenacao ' : dict_ord_template [ ordenacao . oitavo ] ,
' nono_ordenacao ' : dict_ord_template [ ordenacao . nono ] ,
' decimo_ordenacao ' : dict_ord_template [ ordenacao . decimo ] ,
' decimo_primeiro_ordenacao ' : dict_ord_template [ ordenacao . decimo_primeiro ] ,
' decimo_segundo_ordenacao ' : dict_ord_template [ ordenacao . decimo_segundo ] ,
' decimo_terceiro_ordenacao ' : dict_ord_template [ ordenacao . decimo_terceiro ] ,
' decimo_quarto_ordenacao ' : dict_ord_template [ ordenacao . decimo_quarto ]
} )
except KeyError as e :
# self.logger.error("KeyError: " + str(e) + ". Erro ao tentar utilizar "
# "configuração de ordenação. Utilizando ordenação padrão.")
context . update ( {
' primeiro_ordenacao ' : ' identificacao_basica.html ' ,
' segundo_ordenacao ' : ' conteudo_multimidia.html ' ,
' terceiro_ordenacao ' : ' mesa_diretora.html ' ,
' quarto_ordenacao ' : ' lista_presenca_sessao.html ' ,
' quinto_ordenacao ' : ' expedientes.html ' ,
' sexto_ordenacao ' : ' materias_expediente.html ' ,
' setimo_ordenacao ' : ' votos_nominais_expediente.html ' ,
' oitavo_ordenacao ' : ' oradores_expediente.html ' ,
' nono_ordenacao ' : ' lista_presenca_ordemdia.html ' ,
' decimo_ordenacao ' : ' materias_ordemdia.html ' ,
' decimo_primeiro_ordenacao ' : ' votos_nominais_ordemdia.html ' ,
' decimo_segundo_ordenacao ' : ' oradores_ordemdia.html ' ,
' decimo_terceiro_ordenacao ' : ' oradores_explicacoes.html ' ,
' decimo_quarto_ordenacao ' : ' ocorrencias_sessao.html '
} )
} )
html_template = render_to_string ( ' relatorios/relatorio_sessao_plenaria.html ' , context )
info = " Resumo da {} ª Reunião {} \
info = " Resumo da {} ª Reunião {} \
da { } ª Sessão Legislativa da { } \
da { } ª Sessão Legislativa da { } \
Legislatura " .format(inf_basicas_dic[ ' num_sessao_plen ' ],
Legislatura " .format(inf_basicas_dic[ ' num_sessao_plen ' ],
@ -1481,10 +1550,10 @@ def relatorio_sessao_plenaria_pdf(request, pk):
inf_basicas_dic [ ' num_legislatura ' ]
inf_basicas_dic [ ' num_legislatura ' ]
)
)
html_header = render_to_string ( ' relatorios/header_ata.html ' , { " casa " : casa ,
html_header = render_to_string ( ' relatorios/header_ata.html ' , { " casa " : casa ,
" MEDIA_URL " : MEDIA_URL ,
" MEDIA_URL " : MEDIA_URL ,
" logotipo " : casa . logotipo ,
" logotipo " : casa . logotipo ,
" info " : info } )
" info " : info } )
pdf_file = make_pdf ( base_url = base_url , main_template = html_template , header_template = html_header )
pdf_file = make_pdf ( base_url = base_url , main_template = html_template , header_template = html_header )
@ -1494,4 +1563,3 @@ def relatorio_sessao_plenaria_pdf(request, pk):
response . write ( pdf_file )
response . write ( pdf_file )
return response
return response