from datetime import datetime from django.http import HttpResponse from base.models import CasaLegislativa from base.views import ESTADOS from materia.models import Autoria, MateriaLegislativa, Tramitacao from .templates import 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): # Create the HttpResponse object with the appropriate PDF headers. response = HttpResponse(content_type='application/pdf') response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"' # Create the PDF object, using the response object as its "file." # p = canvas.Canvas(response) # Draw things on the PDF. Here's where the PDF generation happens. # See the ReportLab documentation for the full list of functionality. casa = CasaLegislativa.objects.first() cabecalho = get_cabecalho(casa) rodape = get_rodape(casa) imagem = get_imagem(casa) 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 # p.drawString(100, 30, imagem) # Close the PDF object cleanly, and we're done. # p.showPage() # p.save() # filename = "advert-%s.pdf" % id # response = HttpResponse(mimetype='application/pdf') # response['Content-Disposition'] = 'attachment; filename=%s' % filename # t = loader.get_template('print/pdf/advert.rml') # c = Context({ # 'filename' : filename, # 'advert' : advert, # 'request' : request, # })