From c52e0054ce1f3fff2a4c40e37808eeab32043fa6 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Tue, 19 Jan 2016 13:33:53 -0200 Subject: [PATCH] Add relatorio espelho --- relatorios/templates/pdf_espelho_gerar.py | 187 ++++++++++++---------- relatorios/urls.py | 4 +- relatorios/views.py | 94 ++++++++++- 3 files changed, 196 insertions(+), 89 deletions(-) diff --git a/relatorios/templates/pdf_espelho_gerar.py b/relatorios/templates/pdf_espelho_gerar.py index 7bc9cd84b..81744bcf9 100644 --- a/relatorios/templates/pdf_espelho_gerar.py +++ b/relatorios/templates/pdf_espelho_gerar.py @@ -1,4 +1,4 @@ -##parameters=sessao,imagem,data,lst_materias,dic_cabecalho,lst_rodape,dic_filtro +# parameters=sessao,imagem,data,lst_materias,dic_cabecalho,lst_rodape,dic_filtro """relatorio_materia.py External method para gerar o arquivo rml do resultado de uma pesquisa de matérias @@ -11,55 +11,64 @@ import time from trml2pdf import parseString -def cabecalho(dic_cabecalho,imagem): +def cabecalho(dic_cabecalho, imagem): """Gera o codigo rml do cabecalho""" - tmp_data='' - tmp_data+='\t\t\t\t\n' - tmp_data+='\t\t\t\t2cm 25cm 19cm 25cm\n' - tmp_data+='\t\t\t\t\n' - tmp_data+='\t\t\t\t' + dic_cabecalho['nom_casa'] + '\n' - tmp_data+='\t\t\t\t\n' - tmp_data+='\t\t\t\t' + dic_cabecalho['nom_estado'] + '\n' - tmp_data+='\t\t\t\t\n' - tmp_data+='\t\t\t\tSECRETARIA\n' - return tmp_data + tmp_data = '' + tmp_data += '\t\t\t\t\n' + tmp_data += '\t\t\t\t2cm 25cm 19cm 25cm\n' + tmp_data += '\t\t\t\t\n' + tmp_data += '\t\t\t\t' + \ + dic_cabecalho['nom_casa'] + '\n' + tmp_data += '\t\t\t\t\n' + tmp_data += '\t\t\t\t' + \ + dic_cabecalho['nom_estado'] + '\n' + tmp_data += '\t\t\t\t\n' + tmp_data += '\t\t\t\tSECRETARIA\n' + return tmp_data + def rodape(lst_rodape): """Gera o codigo rml do rodape""" - tmp_data='' - tmp_data+='\t\t\t\t2cm 3.2cm 19cm 3.2cm\n' - tmp_data+='\t\t\t\t\n' - tmp_data+='\t\t\t\t' + lst_rodape[2] + '\n' - tmp_data+='\t\t\t\t' + lst_rodape[0] + '\n' - tmp_data+='\t\t\t\t' + lst_rodape[1] + '\n' - return tmp_data + tmp_data = '' + tmp_data += '\t\t\t\t2cm 3.2cm 19cm 3.2cm\n' + tmp_data += '\t\t\t\t\n' + tmp_data += '\t\t\t\t' + \ + lst_rodape[2] + '\n' + tmp_data += '\t\t\t\t' + \ + lst_rodape[0] + '\n' + tmp_data += '\t\t\t\t' + \ + lst_rodape[1] + '\n' + return tmp_data + def paraStyle(): """Gera o codigo rml que define o estilo dos paragrafos""" - tmp_data='' - tmp_data+='\t\n' - tmp_data+='\t\t\n' - tmp_data+='\t\t\t\n' - tmp_data+='\t\t\t\n' - tmp_data+='\t\t\n' - tmp_data+='\t\t\n' - tmp_data+='\t\t\t\n' - tmp_data+='\t\t\n' - tmp_data+='\t\t\n' - tmp_data+='\t\t\n' - tmp_data+='\t\n' - return tmp_data + tmp_data = '' + tmp_data += '\t\n' + tmp_data += '\t\t\n' + tmp_data += '\t\t\t\n' + tmp_data += '\t\t\t\n' + tmp_data += '\t\t\n' + tmp_data += '\t\t\n' + tmp_data += '\t\t\t\n' + tmp_data += '\t\t\n' + tmp_data += '\t\t\n' + tmp_data += '\t\t\n' + tmp_data += '\t\n' + return tmp_data + def materias(lst_materias): """Gera o codigo rml do conteudo da pesquisa de materias""" - tmp_data='' + tmp_data = '' - #inicio do bloco que contem os flowables - tmp_data+='\t\n' + # inicio do bloco que contem os flowables + tmp_data += '\t\n' for dic in lst_materias: - #espaco inicial + # espaco inicial # tmp_data+='\t\t\n' # tmp_data+='\t\t\t \n' # tmp_data+='\t\t\n' @@ -67,74 +76,78 @@ def materias(lst_materias): # tmp_data+='\t\t\t \n' # tmp_data+='\t\t\n' - #condicao para a quebra de pagina - tmp_data+='\t\t\n' + # condicao para a quebra de pagina + tmp_data += '\t\t\n' - #materias + # materias # if dic['titulo']!=None: # tmp_data+='\t\t' + dic['titulo'] + '\n' # tmp_data+='\t\t\n' # tmp_data+='\t\t\t \n' # tmp_data+='\t\t\n' - if dic['materia']!=None: - tmp_data+='\t\t\n' - tmp_data+='\t\t\t \n' - tmp_data+='\t\t\n' - tmp_data+='\t\tINDICAÇÃO: ' + dic['materia'] + '\n' - tmp_data+='\t\t\n' - tmp_data+='\t\t\t \n' - tmp_data+='\t\t\n' + if dic['materia'] != None: + tmp_data += '\t\t\n' + tmp_data += '\t\t\t \n' + tmp_data += '\t\t\n' + tmp_data += '\t\tINDICAÇÃO: ' + \ + dic['materia'] + '\n' + tmp_data += '\t\t\n' + tmp_data += '\t\t\t \n' + tmp_data += '\t\t\n' - if dic['dat_apresentacao']!=None: - tmp_data+='\t\tDATA DE ENTRADA: ' + dic['dat_apresentacao'] + '\n' - tmp_data+='\t\t\n' - tmp_data+='\t\t\t \n' - tmp_data+='\t\t\n' - - if dic['nom_autor']!=None: - tmp_data+='\t\tAUTOR: ' + dic['nom_autor'] + '\n' - tmp_data+='\t\t\n' - tmp_data+='\t\t\t \n' - tmp_data+='\t\t\n' - - if dic['txt_ementa']!=None: - txt_ementa = dic['txt_ementa'].replace('&','&') - tmp_data+='\t\tEMENTA: ' + dic['txt_ementa'] + '\n' - tmp_data+='\t\t\n' - tmp_data+='\t\t\t \n' - tmp_data+='\t\t\n' + if dic['dat_apresentacao'] != None: + tmp_data += '\t\tDATA DE ENTRADA: ' + \ + dic['dat_apresentacao'] + '\n' + tmp_data += '\t\t\n' + tmp_data += '\t\t\t \n' + tmp_data += '\t\t\n' + + if dic['nom_autor'] != None: + tmp_data += '\t\tAUTOR: ' + \ + dic['nom_autor'] + '\n' + tmp_data += '\t\t\n' + tmp_data += '\t\t\t \n' + tmp_data += '\t\t\n' + + if dic['txt_ementa'] != None: + txt_ementa = dic['txt_ementa'].replace('&', '&') + tmp_data += '\t\tEMENTA: ' + \ + dic['txt_ementa'] + '\n' + tmp_data += '\t\t\n' + tmp_data += '\t\t\t \n' + tmp_data += '\t\t\n' - tmp_data+='\t\n' - return tmp_data + tmp_data += '\t\n' + return tmp_data -def principal(sessao,imagem,data,lst_materias,dic_cabecalho,lst_rodape,dic_filtro={}): +def principal(sessao, imagem, data, lst_materias, dic_cabecalho, lst_rodape, dic_filtro={}): """Funcao pricipal que gera a estrutura global do arquivo rml""" # if sessao: # arquivoPdf=sessao+".pdf" # else: # arquivoPdf=str(int(time.time()*100))+".pdf" - arquivoPdf=str(int(time.time()*100))+".pdf" - - tmp_data='' - tmp_data+='\n' - tmp_data+='\n' - tmp_data+='\n' - tmp_data+='\t\n' - tmp_data+=paraStyle() - tmp_data+=materias(lst_materias) - tmp_data+='\n' - tmp_pdf = parseString(tmp_data) + arquivoPdf = str(int(time.time() * 100)) + ".pdf" + + tmp_data = '' + tmp_data += '\n' + tmp_data += '\n' + tmp_data += '\n' + tmp_data += '\t\n' + tmp_data += paraStyle() + tmp_data += materias(lst_materias) + tmp_data += '\n' + tmp_pdf = parseString(tmp_data) return tmp_pdf # try: diff --git a/relatorios/urls.py b/relatorios/urls.py index 15a3da226..0b69d687d 100644 --- a/relatorios/urls.py +++ b/relatorios/urls.py @@ -1,7 +1,7 @@ from django.conf.urls import url from .views import (relatorio_documento_administrativo, relatorio_materia, - relatorio_ordem_dia, relatorio_processo) + relatorio_ordem_dia, relatorio_processo, relatorio_espelho) urlpatterns = [ url(r'^relatorios/materia$', relatorio_materia, name='relatorio_materia'), @@ -12,5 +12,7 @@ urlpatterns = [ url(r'^relatorios/relatorio_documento_administrativo$', relatorio_documento_administrativo, name='relatorio_documento_administrativo'), + url(r'^relatorios/espelho$', relatorio_espelho, + name='relatorio_espelho'), ] diff --git a/relatorios/views.py b/relatorios/views.py index 0bb31988a..1018cfdce 100644 --- a/relatorios/views.py +++ b/relatorios/views.py @@ -13,7 +13,8 @@ from protocoloadm.models import (DocumentoAdministrativo, Protocolo, from sessao.models import OrdemDia, SessaoPlenaria from .templates import (pdf_capa_processo_gerar, - pdf_documento_administrativo_gerar, pdf_materia_gerar) + pdf_documento_administrativo_gerar, pdf_espelho_gerar, + pdf_materia_gerar) def get_cabecalho(casa): @@ -434,3 +435,94 @@ def get_documento_administrativo(docs): documentos.append(dic) return documentos + + +def relatorio_espelho(request): + ''' + pdf_espelho_gerar.py + ''' + + response = HttpResponse(content_type='application/pdf') + response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"' + + casa = CasaLegislativa.objects.first() + + cabecalho = get_cabecalho(casa) + rodape = get_rodape(casa) + imagem = get_imagem(casa) + + mats = MateriaLegislativa.objects.all()[:50] + mat_pdf = get_espelho(mats) + + pdf = pdf_espelho_gerar.principal( + None, + imagem, + None, + mat_pdf, + cabecalho, + rodape) + response.write(pdf) + + return response + + +def get_espelho(mats): + materias = [] + for m in mats: + dic = {} + dic['titulo'] = str(m) + dic['materia'] = str(m.numero) + '/' + str(m.ano) + dic['dat_apresentacao'] = str(m.data_apresentacao) + dic['txt_ementa'] = m.ementa + + dic['nom_autor'] = ' ' + for autoria in Autoria.objects.filter(materia=m, primeiro_autor=True): + for autor in Autor.objects.filter(id=autoria.autor.id): + if autor.tipo == 'Parlamentar': + for parlamentar in Parlamentar.objects.filter( + id=autor.parlamentar.id): + dic['nom_autor'] = parlamentar.nome_completo + elif autor.tipo == 'Comissao': + for comissao in Comissao.objects.filter( + id=autor.comissao.id): + dic['nom_autor'] = str(comissao) + else: + dic['nom_autor'] = autor.nome + + des_status = '' + txt_tramitacao = '' + data_ultima_acao = '' + + dic['localizacao_atual'] = " " + for tramitacao in Tramitacao.objects.filter(materia=m): + if tramitacao.unidade_tramitacao_destino: + cod_unid_tram = tramitacao.unidade_tramitacao_destino + else: + cod_unid_tram = tramitacao.unidade_tramitacao_local + + for unidade_tramitacao in UnidadeTramitacao.objects.filter( + id=cod_unid_tram.id): + if unidade_tramitacao.orgao: + dic['localizacao_atual'] = unidade_tramitacao.orgao + elif unidade_tramitacao.parlamentar: + dic['localizacao_atual'] = unidade_tramitacao.parlamentar + else: + dic['localizacao_atual'] = unidade_tramitacao.comissao + + des_status = tramitacao.status + txt_tramitacao = tramitacao.texto + data_ultima_acao = tramitacao.data_tramitacao + + dic['des_situacao'] = des_status + dic['ultima_acao'] = txt_tramitacao + dic['data_ultima_acao'] = data_ultima_acao + + dic['norma_juridica_vinculada'] = 'Não há nenhuma\ + norma jurídica vinculada' + # TODO + # for norma in context.zsql.materia_buscar_norma_juridica_zsql(cod_materia=materia.cod_materia): + # dic['norma_juridica_vinculada'] = norma.des_norma + " " + \ + # str(norma.num_norma) + "/" + str(norma.ano_norma) + + materias.append(dic) + return materias