Conjunto de mudanças 5379 no repositório publico


Ignorar:
Timestamp:
15/10/2011 01:43:26 (8 anos atrás)
Autor:
fabianosantos
Mensagem:

Implementação de view para download de anexo e metodos para retorno
dos tramites e anexos de um protocolo.

Arquivo:
1 editado

Legenda:

Não Modificado
Adicionado
Removido
  • il.spdo/trunk/il/spdo/browser/views.py

    r5374 r5379  
    55from zope.schema.interfaces import IVocabularyFactory
    66from plone.app.layout.navigation.interfaces import INavigationRoot
     7from plone.namedfile.utils import set_headers, stream_data
     8from plone.namedfile.file import NamedFile
    79from Products.statusmessages.interfaces import IStatusMessage
    810from Products.Five.browser import BrowserView
    911
    10 from il.spdo.db import Area, Pessoa, Protocolo, Observacao
     12from il.spdo.db import Area, Pessoa, Protocolo, Observacao, Tramite
    1113from il.spdo.config import Session
    1214from il.spdo.api import ISPDOAPI
    1315from il.spdo.config import MessageFactory as _
    14 
    15 class ProtocoloMacroView(BrowserView):
    16 
    17     def __getitem__(self, key):
    18         return self.index.macros[key]
    19 
    2016
    2117class AreaListView(grok.View):
     
    4339    def add_url(self):
    4440        return self.context.absolute_url() + '/@@add-area'
     41
     42
     43class DownloadAnexoView(grok.View):
     44    grok.name('download-anexo')
     45    grok.context(INavigationRoot)
     46    grok.require('cmf.ManagePortal')
     47
     48    def update(self):
     49        anexo_id = self.request.get('anexo_id', None)
     50        if anexo_id is None:
     51            #TODO: incluir mensagem
     52            return self.request.response.redirect(self.context.absolute_url())
     53
     54        self.api = getUtility(ISPDOAPI)
     55        self.anexo = self.api.getAnexo(anexo_id)
     56        if not self.anexo:
     57            #TODO: incluir mensagem
     58            return self.request.response.redirect(self.context.absolute_url())
     59
     60    def render(self):
     61        file_anexo = self.api.getFileAnexo(self.anexo)
     62        file_anexo = NamedFile(file_anexo, filename=self.anexo.arquivo)
     63        set_headers(file_anexo, self.request.response)
     64        #cd = 'inline; filename=%s' % self.anexo.arquivo
     65        #self.request.response.setHeader('Content-Disposition', cd)
     66        return stream_data(file_anexo)
     67
    4568
    4669class PessoaListView(grok.View):
     
    125148
    126149    def anexos(self):
    127         pass
    128 
    129     def tramitacao(self):
    130         pass
    131    
     150        anexos = self._protocolo.anexo
     151        result = []
     152        for anexo in anexos:
     153            result.append({
     154                'data':anexo.data,
     155                'tamanho':anexo.tamanho,
     156                'nome':anexo.arquivo,
     157                'download_url':self.context.absolute_url() + '/@@download-anexo?anexo_id=' + str(anexo.id),
     158            })
     159        return result
     160       
     161    def tramites(self):
     162        session = Session()
     163        query = session.query(Tramite)
     164        query = query.filter(Tramite.protocolo_id==self._protocolo.id)
     165        items = query.order_by(Tramite.id).all()
     166        result = []
     167        for tramite in items:
     168            result.append({
     169               'data_disponibilizacao':tramite.data_disponibilizacao,
     170               'data_recebimento':tramite.data_recebimento,
     171               'area':tramite.area.sigla,
     172               'nome_responsavel':tramite.responsavel.pessoa.nome,
     173               'responsavel_id':tramite.responsavel.pessoa_id,
     174               'acao':tramite.acao,
     175               })
     176        return result
     177           
    132178    @property
    133179    def protocolo(self):
     
    150196            status.add(_(u'Protocolo não localizado'), 'warn')
    151197            return self.request.response.redirect(self.context.absolute_url())
    152 
    153 class ProtocoloViewlet(ProtocoloShowView):
    154     grok.name('viewlet-protocolo')
    155     grok.context(INavigationRoot)
    156     grok.require('cmf.ManagePortal')
Note: Veja TracChangeset para ajuda no uso do visualizador de conjunto de mudanças.
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.