mirror of https://github.com/interlegis/sapl.git
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.
253 lines
7.9 KiB
253 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
|
|
|