Sistema de Apoio ao Processo Legislativo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

254 lines
7.9 KiB

from datetime import datetime
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 parlamentares.models import Parlamentar
from protocoloadm.models import Protocolo, DocumentoAdministrativo
from .templates import pdf_capa_processo_gerar, pdf_materia_gerar
def get_cabecalho(casa):
cabecalho = {}
cabecalho["nom_casa"] = casa.nome
cabecalho["nom_estado"] = "Estado de " + ESTADOS[casa.uf.upper()]
return cabecalho
def get_imagem(casa):
if casa.logotipo:
return casa.logotipo.path
else:
# TODO: recuperar de uma variavel de sistema
return 'static/img/brasao_transp.gif'
def get_rodape(casa):
if len(casa.cep) == 8:
cep = casa.cep[:4] + "-" + casa.cep[5:]
else:
cep = ""
linha1 = casa.endereco
if cep:
if casa.endereco:
linha1 = linha1 + " - "
linha1 = linha1 + "CEP " + cep
# substituindo nom_localidade por municipio e sgl_uf por uf
if casa.municipio:
linha1 = linha1 + " - " + casa.municipio + " " + casa.uf
if casa.telefone:
linha1 = linha1 + " Tel.: " + casa.telefone
if casa.endereco_web:
linha2 = casa.endereco_web
else:
linha2 = ""
if casa.email:
if casa.endereco_web:
linha2 = linha2 + " - "
linha2 = linha2 + "E-mail: " + casa.email
data_emissao = datetime.today().strftime("%d/%m/%Y")
return [linha1, linha2, data_emissao]
def get_materias(mats):
materias = []
for materia in mats:
dic = {}
dic['titulo'] = materia.tipo.sigla + " " + materia.tipo.descricao \
+ " " + str(materia.numero) + "/" + str(materia.ano)
dic['txt_ementa'] = materia.ementa
autores = Autoria.objects.filter(materia=materia)
dic['nom_autor'] = " "
for autoria in autores:
if autoria.autor.parlamentar:
dic['nom_autor'] = autoria.autor.parlamentar.nome_completo
elif autoria.autor.comissao:
dic['nom_autor'] = autoria.autor.comissao.nome
des_status = ''
txt_tramitacao = ''
dic['localizacao_atual'] = " "
tramitacoes = Tramitacao.objects.filter(
unidade_tramitacao_destino__isnull=True).order_by(
'data_tramitacao')
for tramitacao in tramitacoes:
des_status = tramitacao.status.descricao
txt_tramitacao = tramitacao.texto
# for tramitacao in context.zsql
# .tramitacao_obter_zsql(cod_materia
# =materia.cod_materia,ind_ult_tramitacao=1):
# if tramitacao.cod_unid_tram_dest:
# cod_unid_tram = tramitacao.cod_unid_tram_dest
# else:
# cod_unid_tram = tramitacao.cod_unid_tram_local
# for unidade_tramitacao in
# context.zsql
# .unidade_tramitacao_obter_zsql(
# cod_unid_tramitacao = cod_unid_tram):
# if unidade_tramitacao.cod_orgao:
# dic['localizacao_atual']=unidade_tramitacao.nom_orgao
# else:
# dic['localizacao_atual']=unidade_tramitacao.nom_comissao
# des_status=tramitacao.des_status
# txt_tramitacao=tramitacao.txt_tramitacao
dic['des_situacao'] = des_status
dic['ultima_acao'] = txt_tramitacao
dic['norma_vinculada'] = " "
# for norma_vinculada in context.zsql
# .materia_buscar_norma_juridica_zsql(cod_materia=materia.cod_materia):
# dic['norma_vinculada']=
# norma_vinculada.des_norma+" "
# +str(norma_vinculada.num_norma)+"/"+str(norma_vinculada.ano_norma)
materias.append(dic)
return materias
def relatorio_materia(request):
'''
pdf_materia_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)
# TODO pesquisar baseado em filtros
mats = MateriaLegislativa.objects.all()[:50]
materias = get_materias(mats)
pdf = pdf_materia_gerar.principal(None,
imagem,
None,
materias,
cabecalho,
rodape)
response.write(pdf)
return response
def get_capa_processo(prot):
protocolos = []
for p in prot:
dic = {}
dic['numero'] = str(p.numero)
dic['ano'] = str(p.ano)
dic['data'] = str(p.data) + ' - ' + str(p.hora)
dic['txt_assunto'] = p.assunto_ementa
dic['txt_interessado'] = p.interessado
dic['nom_autor'] = " "
dic['titulo'] = " "
if p.autor is not None:
for autor in Autor.objects.filter(id=p.autor.id):
if autor.tipo == 'Parlamentar':
for parlamentar in Parlamentar.objects.filter(
id=p.autor.parlamentar.id):
dic['nom_autor'] = parlamentar.nome_completo or ' '
elif autor.tipo == 'Comissao':
for comissao in Comissao.objects.filter(
id=p.autor.comissao.id):
dic['nom_autor'] = comissao.nome or ' '
else:
dic['nom_autor'] = autor.nome or ' '
else:
dic['nom_autor'] = p.interessado
dic['natureza'] = ''
if p.tipo_processo == 0:
dic['natureza'] = 'Administrativo'
if p.tipo_processo == 1:
dic['natureza'] = 'Legislativo'
dic['ident_processo'] = str(p.tipo_materia) or str(p.tipo_documento)
dic['sgl_processo'] = str(p.tipo_materia) or str(p.tipo_documento)
dic['num_materia'] = ''
for materia in MateriaLegislativa.objects.filter(
numero_protocolo=p.numero, ano=p.ano):
dic['num_materia'] = str(materia.numero) + '/' + str(materia.ano)
dic['num_documento'] = ''
for documento in DocumentoAdministrativo.objects.filter(
numero=p.numero):
dic['num_documento'] = str(
documento.numero) + '/' + str(documento.ano)
dic['num_processo'] = dic['num_materia'] or dic['num_documento']
dic['numeracao'] = ''
for materia_num in MateriaLegislativa.objects.filter(
numero_protocolo=p.numero, ano=p.ano):
for numera in Numeracao.objects.filter(materia=materia_num):
dic['numeracao'] = 'PROCESSO N° ' + \
str(numera.numero) + '/' + str(numera.ano)
dic['anulado'] = ''
if p.anulado == 1:
dic['anulado'] = 'Nulo'
protocolos.append(dic)
return protocolos
def relatorio_processo(request):
'''
pdf_capa_processo_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)
protocolos = Protocolo.objects.all()[:50]
protocolos_pdf = get_capa_processo(protocolos)
pdf = pdf_capa_processo_gerar.principal(None,
imagem,
None,
protocolos_pdf,
cabecalho,
rodape)
response.write(pdf)
return response