Browse Source

Add relatorio documento administrativo

pull/202/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
a12787eb1f
  1. 9
      materia/views.py
  2. 5
      parlamentares/views.py
  3. 187
      relatorios/templates/pdf_documento_administrativo_gerar.py
  4. 11
      relatorios/templates/pdf_ordem_dia_gerar.py
  5. 9
      relatorios/urls.py
  6. 193
      relatorios/views.py

9
materia/views.py

@ -1,9 +1,6 @@
from datetime import date, datetime
from re import sub
import sapl
from comissoes.models import Comissao, Composicao
from compilacao.views import IntegracaoTaView
from crispy_forms.helper import FormHelper
from crispy_forms.layout import ButtonHolder, Column, Fieldset, Layout, Submit
from django import forms
@ -18,11 +15,15 @@ from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
from django.views.generic import ListView
from django.views.generic.edit import FormMixin
from vanilla.views import GenericView
import sapl
from comissoes.models import Comissao, Composicao
from compilacao.views import IntegracaoTaView
from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica
from parlamentares.models import Parlamentar
from sapl.crud import build_crud
from sessao.models import AcompanharMateria
from vanilla.views import GenericView
from .models import (Anexada, Autor, Autoria, DespachoInicial,
DocumentoAcessorio, MateriaLegislativa, Numeracao, Orgao,

5
parlamentares/views.py

@ -1,7 +1,6 @@
import os
from re import sub
import sapl
from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, ButtonHolder, Fieldset, Layout, Submit
from django import forms
@ -12,9 +11,11 @@ from django.utils.html import strip_tags
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
from django.views.generic.edit import FormMixin
from sapl.crud import build_crud
from vanilla import GenericView
import sapl
from sapl.crud import build_crud
from .models import (CargoMesa, Coligacao, ComposicaoMesa, Dependente,
Filiacao, Legislatura, Mandato, NivelInstrucao,
Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar,

187
relatorios/templates/pdf_documento_administrativo_gerar.py

@ -1,7 +1,8 @@
##parameters=sessao,imagem,data,lst_documentos,dic_cabecalho,lst_rodape,dic_filtro
# parameters=sessao,imagem,data,lst_documentos,dic_cabecalho,lst_rodape,dic_filtro
"""relatorio_documento.py
External method para gerar o arquivo rml do resultado de uma pesquisa de documentos administrativos
External method para gerar o arquivo rml do resultado
de uma pesquisa de documentos administrativos
Autor: Luciano De Fazio
Empresa: OpenLegis Consultoria
versão: 1.0
@ -11,115 +12,128 @@ import time
from trml2pdf import parseString
def cabecalho(inf_basicas_dic,imagem):
def cabecalho(inf_basicas_dic, imagem):
"""Gera o codigo rml do cabecalho"""
tmp_data=''
tmp_data+='\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + imagem + '"/>\n'
tmp_data+='\t\t\t\t<lines>2cm 25.4cm 19cm 25.4cm</lines>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n'
tmp_data+='\t\t\t\t<drawString x="5cm" y="27.2cm">' + dic_cabecalho['nom_casa'] + '</drawString>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp_data+='\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n'
tmp_data+='\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Documentos Administrativos</drawString>\n'
tmp_data = ''
tmp_data += '\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + \
imagem + '"/>\n'
tmp_data += '\t\t\t\t<lines>2cm 25.4cm 19cm 25.4cm</lines>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n'
tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \
inf_basicas_dic['nom_casa'] + '</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp_data += '\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n'
tmp_data += '\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Documentos Administrativos</drawString>\n'
return tmp_data
def rodape(lst_rodape):
"""Gera o codigo rml do rodape"""
tmp_data=''
tmp_data+='\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica" size="8"/>\n'
tmp_data+='\t\t\t\t<drawString x="2cm" y="3.3cm">' + lst_rodape[2] + '</drawString>\n'
tmp_data+='\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n'
tmp_data+='\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + lst_rodape[0] + '</drawCentredString>\n'
tmp_data+='\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + lst_rodape[1] + '</drawCentredString>\n'
tmp_data = ''
tmp_data += '\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="8"/>\n'
tmp_data += '\t\t\t\t<drawString x="2cm" y="3.3cm">' + \
lst_rodape[2] + '</drawString>\n'
tmp_data += '\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + \
lst_rodape[0] + '</drawCentredString>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + \
lst_rodape[1] + '</drawCentredString>\n'
return tmp_data
def paraStyle():
"""Gera o codigo rml que define o estilo dos paragrafos"""
tmp_data=''
tmp_data+='\t<stylesheet>\n'
tmp_data+='\t\t<blockTableStyle id="Standard_Outline">\n'
tmp_data+='\t\t\t<blockAlignment value="LEFT"/>\n'
tmp_data+='\t\t\t<blockValign value="TOP"/>\n'
tmp_data+='\t\t</blockTableStyle>\n'
tmp_data+='\t\t<initialize>\n'
tmp_data+='\t\t\t<paraStyle name="all" alignment="justify"/>\n'
tmp_data+='\t\t</initialize>\n'
tmp_data+='\t\t<paraStyle name="P1" fontName="Helvetica-Bold" fontSize="10.0" leading="10" alignment="CENTER"/>\n'
tmp_data+='\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="10.0" leading="12" alignment="justify"/>\n'
tmp_data+='\t</stylesheet>\n'
tmp_data = ''
tmp_data += '\t<stylesheet>\n'
tmp_data += '\t\t<blockTableStyle id="Standard_Outline">\n'
tmp_data += '\t\t\t<blockAlignment value="LEFT"/>\n'
tmp_data += '\t\t\t<blockValign value="TOP"/>\n'
tmp_data += '\t\t</blockTableStyle>\n'
tmp_data += '\t\t<initialize>\n'
tmp_data += '\t\t\t<paraStyle name="all" alignment="justify"/>\n'
tmp_data += '\t\t</initialize>\n'
tmp_data += '\t\t<paraStyle name="P1" fontName="Helvetica-Bold" fontSize="10.0" leading="10" alignment="CENTER"/>\n'
tmp_data += '\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="10.0" leading="12" alignment="justify"/>\n'
tmp_data += '\t</stylesheet>\n'
return tmp_data
def documentos(lst_documentos):
"""Gera o codigo rml do conteudo da pesquisa de documentos administrativos"""
tmp_data=''
tmp_data = ''
#inicio do bloco que contem os flowables
tmp_data+='\t<story>\n'
# inicio do bloco que contem os flowables
tmp_data += '\t<story>\n'
for dic in lst_documentos:
#espaco inicial
tmp_data+='\t\t<para style="P2">\n'
tmp_data+='\t\t\t<font color="white"> </font>\n'
tmp_data+='\t\t</para>\n'
tmp_data+='\t\t<para style="P2">\n'
tmp_data+='\t\t\t<font color="white"> </font>\n'
tmp_data+='\t\t</para>\n'
#condicao para a quebra de pagina
tmp_data+='\t\t<condPageBreak height="2cm"/>\n'
#materias
if dic['titulo']!=None:
tmp_data+='\t\t<para style="P1">' + dic['titulo'] + '</para>\n'
tmp_data+='\t\t<para style="P1">\n'
tmp_data+='\t\t\t<font color="white"> </font>\n'
tmp_data+='\t\t</para>\n'
if dic['txt_assunto']!=None:
txt_assunto = dic['txt_assunto'].replace('&','&amp;')
tmp_data+='\t\t<para style="P2">' + txt_assunto + '</para>\n'
if dic['txt_interessado']!=None:
tmp_data+='\t\t<para style="P2"><b>Interessado:</b> ' + dic['txt_interessado'] + '</para>\n'
if dic['localizacao_atual']!=None:
tmp_data+='\t\t<para style="P2"><b>Localização Atual:</b> ' + dic['localizacao_atual'] + '</para>\n'
if dic['des_situacao']!=None:
tmp_data+='\t\t<para style="P2"><b>Situação:</b> ' + dic['des_situacao'] + '</para>\n'
if dic['ultima_acao']!=None:
tmp_data+='\t\t<para style="P2"><b>Última Ação:</b> ' + dic['ultima_acao'] + '</para>\n'
tmp_data+='\t</story>\n'
# espaco inicial
tmp_data += '\t\t<para style="P2">\n'
tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data += '\t\t</para>\n'
tmp_data += '\t\t<para style="P2">\n'
tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data += '\t\t</para>\n'
# condicao para a quebra de pagina
tmp_data += '\t\t<condPageBreak height="2cm"/>\n'
# materias
if dic['titulo'] != None:
tmp_data += '\t\t<para style="P1">' + dic['titulo'] + '</para>\n'
tmp_data += '\t\t<para style="P1">\n'
tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data += '\t\t</para>\n'
if dic['txt_assunto'] != None:
txt_assunto = dic['txt_assunto'].replace('&', '&amp;')
tmp_data += '\t\t<para style="P2">' + txt_assunto + '</para>\n'
if dic['txt_interessado'] != None:
tmp_data += '\t\t<para style="P2"><b>Interessado:</b> ' + \
dic['txt_interessado'] + '</para>\n'
if dic['localizacao_atual'] != None:
tmp_data += '\t\t<para style="P2"><b>Localização Atual:</b> ' + \
dic['localizacao_atual'] + '</para>\n'
if dic['des_situacao'] != None:
tmp_data += '\t\t<para style="P2"><b>Situação:</b> ' + \
dic['des_situacao'] + '</para>\n'
if dic['ultima_acao'] != None:
tmp_data += '\t\t<para style="P2"><b>Última Ação:</b> ' + \
dic['ultima_acao'] + '</para>\n'
tmp_data += '\t</story>\n'
return tmp_data
def principal(sessao,imagem,data,lst_documentos,dic_cabecalho,lst_rodape,dic_filtro={}):
def principal(sessao, imagem, data, lst_documentos, dic_cabecalho, lst_rodape, dic_filtro={}):
"""Funcao pricipal que gera a estrutura global do arquivo rml"""
arquivoPdf=str(int(time.time()*100))+".pdf"
tmp_data=''
tmp_data+='<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n'
tmp_data+='<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n'
tmp_data+='<document filename="relatorio.pdf">\n'
tmp_data+='\t<template pageSize="(21cm, 29.7cm)" title="Relatorio de Documentos Administrativos" author="OpenLegis" allowSplitting="20">\n'
tmp_data+='\t\t<pageTemplate id="first">\n'
tmp_data+='\t\t\t<pageGraphics>\n'
tmp_data+=cabecalho(dic_cabecalho,imagem)
tmp_data+=rodape(lst_rodape)
tmp_data+='\t\t\t</pageGraphics>\n'
tmp_data+='\t\t\t<frame id="first" x1="2cm" y1="3.5cm" width="17cm" height="21cm"/>\n'
tmp_data+='\t\t</pageTemplate>\n'
tmp_data+='\t</template>\n'
tmp_data+=paraStyle()
tmp_data+=documentos(lst_documentos)
tmp_data+='</document>\n'
tmp_pdf=parseString(tmp_data)
arquivoPdf = str(int(time.time() * 100)) + ".pdf"
tmp_data = ''
tmp_data += '<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n'
tmp_data += '<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n'
tmp_data += '<document filename="relatorio.pdf">\n'
tmp_data += '\t<template pageSize="(21cm, 29.7cm)" title="Relatorio de Documentos Administrativos" author="OpenLegis" allowSplitting="20">\n'
tmp_data += '\t\t<pageTemplate id="first">\n'
tmp_data += '\t\t\t<pageGraphics>\n'
tmp_data += cabecalho(dic_cabecalho, imagem)
tmp_data += rodape(lst_rodape)
tmp_data += '\t\t\t</pageGraphics>\n'
tmp_data += '\t\t\t<frame id="first" x1="2cm" y1="3.5cm" width="17cm" height="21cm"/>\n'
tmp_data += '\t\t</pageTemplate>\n'
tmp_data += '\t</template>\n'
tmp_data += paraStyle()
tmp_data += documentos(lst_documentos)
tmp_data += '</document>\n'
tmp_pdf = parseString(tmp_data)
return tmp_pdf
@ -131,4 +145,5 @@ def principal(sessao,imagem,data,lst_documentos,dic_cabecalho,lst_rodape,dic_fil
# return "/temp_folder/"+arquivoPdf
# return principal(sessao,imagem,data,lst_documentos,dic_cabecalho,lst_rodape,dic_filtro)
# return
# principal(sessao,imagem,data,lst_documentos,dic_cabecalho,lst_rodape,dic_filtro)

11
relatorios/templates/pdf_ordem_dia_gerar.py

@ -212,10 +212,10 @@ def principal(sessao, imagem, dat_ordem, lst_splen, lst_pauta, dic_cabecalho, ls
return tmp_pdf
# # try:
# # tmp_pdf=parseString(unicode(tmp, 'utf-8'))
# # except:
# # tmp_pdf=parseString(unicode(tmp, 'utf-8'))
# try:
# tmp_pdf=parseString(unicode(tmp, 'utf-8'))
# except:
# tmp_pdf=parseString(unicode(tmp, 'utf-8'))
# if hasattr(context.temp_folder, arquivoPdf):
# context.temp_folder.manage_delObjects(ids=arquivoPdf)
@ -226,4 +226,5 @@ def principal(sessao, imagem, dat_ordem, lst_splen, lst_pauta, dic_cabecalho, ls
# return "/temp_folder/" + arquivoPdf
# return principal(sessao, imagem, dat_ordem, lst_splen, lst_pauta, dic_cabecalho, lst_rodape)
# return principal(sessao, imagem, dat_ordem, lst_splen, lst_pauta,
# dic_cabecalho, lst_rodape)

9
relatorios/urls.py

@ -1,9 +1,16 @@
from django.conf.urls import url
from .views import relatorio_materia, relatorio_processo
from .views import (relatorio_documento_administrativo, relatorio_materia,
relatorio_ordem_dia, relatorio_processo)
urlpatterns = [
url(r'^relatorios/materia$', relatorio_materia, name='relatorio_materia'),
url(r'^relatorios/cap_processo$',
relatorio_processo, name='relatorio_cap_processo'),
url(r'^relatorios/ordem_dia$', relatorio_ordem_dia,
name='relatorio_ordem_dia'),
url(r'^relatorios/relatorio_documento_administrativo$',
relatorio_documento_administrativo,
name='relatorio_documento_administrativo'),
]

193
relatorios/views.py

@ -1,15 +1,19 @@
from datetime import datetime
from django.http import HttpResponse
from base.models import CasaLegislativa
from base.views import ESTADOS
from comissoes.models import Comissao
from django.http import HttpResponse
from materia.models import (Autor, Autoria, MateriaLegislativa, Tramitacao,
Numeracao)
from materia.models import (Autor, Autoria, MateriaLegislativa, Numeracao,
Tramitacao, UnidadeTramitacao)
from parlamentares.models import Parlamentar
from protocoloadm.models import Protocolo, DocumentoAdministrativo
from protocoloadm.models import (DocumentoAdministrativo, Protocolo,
TramitacaoAdministrativo)
from sessao.models import OrdemDia, SessaoPlenaria
from .templates import pdf_capa_processo_gerar, pdf_materia_gerar
from .templates import (pdf_capa_processo_gerar,
pdf_documento_administrativo_gerar, pdf_materia_gerar)
def get_cabecalho(casa):
@ -251,3 +255,182 @@ def relatorio_processo(request):
response.write(pdf)
return response
def get_ordem_dia(ordem, sessao):
pass
# splen = []
# pauta = []
# data = ''
# for dat_sessao in SessaoPlenaria.objects.filter(id=sessao.id):
# data = dat_sessao.data_inicio
# dat_ordem = dat_sessao.data_inicio
# seleciona dados da sessão plenária
# for sp in context.zsql.sessao_plenaria_obter_zsql(dat_inicio_sessao=data, ind_excluido=0):
# dicsp = {} # dicionário que armazenará os dados a serem impressos de uma sessão plenária
# ts = context.zsql.tipo_sessao_plenaria_obter_zsql(tip_sessao=sp.tip_sessao)[0]
# dicsp["sessao"] = str(sp.num_sessao_plen)+"ª Sessao "+ts.nom_sessao+" da "+str(sp.num_sessao_leg)+"ª Sessao Legislativa da "+str(sp.num_legislatura)+"ª Legislatura"
# dia = context.pysc.data_converter_por_extenso_pysc(data=sp.dat_inicio_sessao)
# hora = context.pysc.hora_formatar_pysc(hora=sp.hr_inicio_sessao)
# dicsp["datasessao"] = "Dia "+str(dia)+" ("+str(sp.dia_sessao)+") - Inicio as "+hora
# splen.append(dicsp)
# seleciona as matérias que compõem a pauta na data escolhida
# for ordem in context.zsql.ordem_dia_obter_zsql(dat_ordem=data, ind_excluido=0):
# seleciona os detalhes de uma matéria
# materia = context.zsql.materia_obter_zsql(cod_materia=ordem.cod_materia)[0]
# dic = {} # dicionário que armazenará os dados a serem impressos de uma matéria
# dic["num_ordem"] = ordem.num_ordem
# dic["id_materia"] = materia.des_tipo_materia+" - Nº "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica)
# dic["id_materia"] = materia.sgl_tipo_materia+" - "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica)+" - "+materia.des_tipo_materia
# dic["txt_ementa"] = ordem.txt_observacao
# numeracao do processo 26/02/2011
# dic["des_numeracao"]=""
# numeracao = context.zsql.numeracao_obter_zsql(cod_materia=ordem.cod_materia)
# if len(numeracao):
# numeracao = numeracao[0]
# dic["des_numeracao"] = str(numeracao.num_materia)+"/"+str(numeracao.ano_materia)
# dic["des_turno"]=""
# dic["des_situacao"] = ""
# tramitacao = context.zsql.tramitacao_obter_zsql(cod_materia=ordem.cod_materia, ind_ult_tramitacao=1)
# if len(tramitacao):
# tramitacao = tramitacao[0]
# if tramitacao.sgl_turno != "":
# for turno in [("P","Primeiro"), ("S","Segundo"), ("U","Único"), ("L","Suplementar"), ("A","Votação Única em Regime de Urgência"), ("B","1ª Votação"), ("C","2ª e 3ª Votações")]:
# if tramitacao.sgl_turno == turno[0]:
# dic["des_turno"] = turno[1]
# dic["des_situacao"] = tramitacao.des_status
# if dic["des_situacao"]==None:
# dic["des_situacao"] = " "
# dic["nom_autor"] = ''
# autoria = context.zsql.autoria_obter_zsql(cod_materia=ordem.cod_materia, ind_primeiro_autor=1)
# if len(autoria): # se existe autor
# autoria = autoria[0]
# try:
# autor = context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor)
# if len(autor):
# autor = autor[0]
# if autor.des_tipo_autor == "Parlamentar":
# parlamentar = context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar)[0]
# dic["nom_autor"] = parlamentar.nom_parlamentar
# elif autor.des_tipo_autor == "Comissao":
# comissao = context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao)[0]
# dic["nom_autor"] = comissao.nom_comissao
# else:
# dic["nom_autor"] = autor.nom_autor
# except:
# pass
# lst_relator = [] # lista contendo os relatores da matéria
# for relatoria in context.zsql.relatoria_obter_zsql(cod_materia=ordem.cod_materia):
# parlamentar = context.zsql.parlamentar_obter_zsql(cod_parlamentar=relatoria.cod_parlamentar)[0]
# comissao = context.zsql.comissao_obter_zsql(cod_comissao=relatoria.cod_comissao)[0]
# lst_relator.append(parlamentar.nom_parlamentar+" - "+comissao.nom_comissao)
# if not len(lst_relator):
# lst_relator = ['']
# dic["lst_relator"] = lst_relator
# adiciona o dicionário na pauta
# pauta.append(dic)
def relatorio_ordem_dia(request):
'''
pdf_ordem_dia_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)
ordem = OrdemDia.objects.all()[:50]
sessao = SessaoPlenaria.objects.first()
ordem_pdf = get_ordem_dia(ordem, sessao)
pdf = pdf_capa_processo_gerar.principal(None,
imagem,
None,
ordem_pdf,
cabecalho,
rodape)
response.write(pdf)
return response
def relatorio_documento_administrativo(request):
'''
pdf_documento_administrativo_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)
docs = DocumentoAdministrativo.objects.all()[:50]
doc_pdf = get_documento_administrativo(docs)
pdf = pdf_documento_administrativo_gerar.principal(
None,
imagem,
None,
doc_pdf,
cabecalho,
rodape)
response.write(pdf)
return response
def get_documento_administrativo(docs):
documentos = []
for d in docs:
dic = {}
dic['titulo'] = str(d)
dic['txt_assunto'] = d.assunto
dic['txt_interessado'] = d.interessado
des_status = ''
txt_tramitacao = ''
dic['localizacao_atual'] = ' '
# Será removido o 'última'?
for t in TramitacaoAdministrativo.objects.filter(
documento=d, ultima=True):
if t.unidade_tramitacao_destino:
cod_unid_tram = t.unidade_tramitacao_destino
else:
cod_unid_tram = t.unidade_tramitacao_destino
for unidade_tramitacao in UnidadeTramitacao.objects.filter(
id=cod_unid_tram):
if unidade_tramitacao.orgao:
dic['localizacao_atual'] = unidade_tramitacao.orgao
else:
dic['localizacao_atual'] = unidade_tramitacao.comissao
des_status = t.status.descricao
txt_tramitacao = t.texto
dic['des_situacao'] = des_status
dic['ultima_acao'] = txt_tramitacao
documentos.append(dic)
return documentos

Loading…
Cancel
Save