From 23ffae083361177956529b4018b43293de602fd3 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Tue, 7 Mar 2017 16:37:12 -0300 Subject: [PATCH] =?UTF-8?q?Cria=20fun=C3=A7=C3=A3o=20para=20recupera=C3=A7?= =?UTF-8?q?=C3=A3o=20do=20texto=20integral=20de=20documento?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/protocoloadm/urls.py | 5 ++++- sapl/protocoloadm/views.py | 40 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/sapl/protocoloadm/urls.py b/sapl/protocoloadm/urls.py index 21c627b06..f6d684ead 100644 --- a/sapl/protocoloadm/urls.py +++ b/sapl/protocoloadm/urls.py @@ -16,7 +16,7 @@ from sapl.protocoloadm.views import (AnularProtocoloAdmView, ProtocoloPesquisaView, StatusTramitacaoAdministrativoCrud, TipoDocumentoAdministrativoCrud, - TramitacaoAdmCrud) + TramitacaoAdmCrud, doc_texto_integral) from .apps import AppConfig @@ -38,6 +38,9 @@ urlpatterns_documento_administrativo = [ url(r'^docadm/doc-ace-adm/edit/(?P\d+)/(?P\d+)', DocumentoAcessorioAdministrativoEditView.as_view(), name='doc_ace_adm_edit'), + + url(r'^doc/texto_integral/(?P\d+)$', doc_texto_integral, + name='doc_texto_integral'), ] urlpatterns_protocolo = [ diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index 4dea7a38b..6a40665fc 100644 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -6,7 +6,7 @@ from django.contrib.auth.mixins import PermissionRequiredMixin from django.core.exceptions import ObjectDoesNotExist from django.core.urlresolvers import reverse from django.db.models import Max -from django.http import HttpResponseRedirect +from django.http import Http404, HttpResponse, HttpResponseRedirect from django.shortcuts import redirect from django.utils.translation import ugettext_lazy as _ from django.views.generic import CreateView, DetailView, FormView, ListView @@ -40,6 +40,36 @@ DocumentoAcessorioAdministrativoCrud = Crud.build( DocumentoAcessorioAdministrativo, '') +def doc_texto_integral(request, pk): + can_see = True + + if not request.user.is_authenticated(): + app_config = sapl.base.models.AppConfig.objects.last() + if app_config and app_config.documentos_administrativos == 'R': + can_see = False + + if can_see: + documento = DocumentoAdministrativo.objects.get(pk=pk) + if documento.texto_integral: + arquivo = documento.texto_integral + + ext = arquivo.name.split('.')[-1] + mime = '' + if ext == 'odt': + mime = 'application/vnd.oasis.opendocument.text' + else: + mime = "application/%s" % (ext,) + + with open(arquivo.path, 'rb') as f: + data = f.read() + + response = HttpResponse(data, content_type='%s' % mime) + response['Content-Disposition'] = ( + 'inline; filename="%s"' % arquivo.name.split('/')[-1]) + return response + raise Http404 + + class DocumentoAdministrativoMixin: def has_permission(self): @@ -63,7 +93,13 @@ class DocumentoAdministrativoCrud(Crud): pass class DetailView(DocumentoAdministrativoMixin, Crud.DetailView): - pass + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + self.layout_display[0]['rows'][-1][0]['text'] = ( + '' % reverse( + 'sapl.protocoloadm:doc_texto_integral', + kwargs={'pk': self.object.pk})) + return context class StatusTramitacaoAdministrativoCrud(CrudAux):