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