source: publico/il.spdo/trunk/il/spdo/browser/views.py @ 5374

Última Alteração nesse arquivo desde 5374 foi 5374, incluída por fabianosantos, 8 anos atrás

Implementação inicial da visualização do protocolo e integração da
visualização com o formulário de adicionar tramite.

File size: 4.8 KB
Linha 
1# -*- coding: utf-8 -*-
2from five import grok
3
4from zope.component import getUtility
5from zope.schema.interfaces import IVocabularyFactory
6from plone.app.layout.navigation.interfaces import INavigationRoot
7from Products.statusmessages.interfaces import IStatusMessage
8from Products.Five.browser import BrowserView
9
10from il.spdo.db import Area, Pessoa, Protocolo, Observacao
11from il.spdo.config import Session
12from il.spdo.api import ISPDOAPI
13from il.spdo.config import MessageFactory as _
14
15class ProtocoloMacroView(BrowserView):
16
17    def __getitem__(self, key):
18        return self.index.macros[key]
19
20
21class AreaListView(grok.View):
22    grok.name('list-area')
23    grok.context(INavigationRoot)
24    grok.require('cmf.ManagePortal')
25
26    areas = []
27
28    def update(self):
29        session = Session()
30        items = session.query(Area).all()
31        self.areas = []
32        for area in items:
33            self.areas.append({
34               'nome': area.nome,
35               'id': area.id,
36               'chefia_id': getattr(area, 'chefia_id', ''),
37               'chefia_nome': getattr(area.area,'nome','')
38               })
39   
40    def show_url(self, area_id):
41        return self.context.absolute_url() + '/@@show-area?id=%s' % area_id
42
43    def add_url(self):
44        return self.context.absolute_url() + '/@@add-area'
45
46class PessoaListView(grok.View):
47    grok.name('list-pessoa')
48    grok.context(INavigationRoot)
49    grok.require('cmf.ManagePortal')
50
51    pessoas = []
52
53    def update(self):
54        session = Session()
55        items = session.query(Pessoa).all()
56        self.pessoas = []
57        for pessoa in items:
58            self.pessoas.append({
59               'nome': pessoa.nome,
60               'id': pessoa.id,
61               'email': pessoa.email
62               })
63   
64    def show_url(self, pessoa_id):
65        return self.context.absolute_url() + '/@@show-pessoa?id=%s' % pessoa_id
66
67    def add_url(self):
68        return self.context.absolute_url() + '/@@add-pessoa'
69
70
71class ProtocoloShowView(grok.View):
72    grok.name('show-protocolo')
73    grok.context(INavigationRoot)
74    grok.require('cmf.ManagePortal')
75
76    def url_pessoa(self, id):
77        return self.context.absolute_url() + '/show-pessoa?id=' + str(id)
78
79    @property
80    def outros_url(self):
81        return self.context.absolute_url() + '/show-outros-protocolo?id=' + str(self._protocolo.id)
82
83    @property
84    def tipo_protocolo(self):
85        tipo_proto_vocab_factory = getUtility(IVocabularyFactory, 'il.spdo.tipoprotocolo-vocab')
86        tipo_proto_vocab = tipo_proto_vocab_factory(self.context)
87        return tipo_proto_vocab.getTerm(self._protocolo.tipoprotocolo).title
88
89    @property
90    def origem(self):
91        return self._protocolo.pessoa_origem[0].pessoa.nome
92
93    @property
94    def origem_url(self):
95        return self.url_pessoa(self._protocolo.pessoa_origem[0].pessoa_id)
96
97    @property
98    def destino(self):
99        return self._protocolo.pessoa_destino[0].pessoa.nome
100
101    @property
102    def destino_url(self):
103        return self.url_pessoa(self._protocolo.pessoa_destino[0].pessoa_id)
104
105    @property
106    def outros_origem(self):
107        return len(self._protocolo.pessoa_origem) > 1
108
109    @property
110    def outros_destino(self):
111        return len(self._protocolo.pessoa_destino) > 1
112
113    def observacoes(self):
114        session = Session()
115        query = session.query(Observacao)
116        query = query.filter(Observacao.protocolo_id==self._protocolo.id)
117        items = query.order_by(Observacao.id).all()
118        result = []
119        for observacao in items:
120            result.append({
121                'texto':observacao.texto,
122                'data':observacao.data,
123                })
124        return result
125
126    def anexos(self):
127        pass
128
129    def tramitacao(self):
130        pass
131   
132    @property
133    def protocolo(self):
134        tipo_proto_vocab_factory = getUtility(IVocabularyFactory, 'il.spdo.tipoprotocolo-vocab')
135        tipo_proto_vocab = tipo_proto_vocab_factory(self.context)
136        return {'id':self._protocolo.id,
137                'numero':self._protocolo.numero,
138                'data':self._protocolo.data,
139                'situacao':self._protocolo.situacao.nome,
140                'numero_documento':self._protocolo.numero_documento,
141                'data_emissao':self._protocolo.data_emissao,
142                'assunto':self._protocolo.assunto,
143            }
144
145    def update(self):
146        self.api = getUtility(ISPDOAPI)
147        self._protocolo = self.api.getProtocolo()
148        if self._protocolo is None:
149            status = IStatusMessage(self.request)
150            status.add(_(u'Protocolo não localizado'), 'warn')
151            return self.request.response.redirect(self.context.absolute_url())
152
153class ProtocoloViewlet(ProtocoloShowView):
154    grok.name('viewlet-protocolo')
155    grok.context(INavigationRoot)
156    grok.require('cmf.ManagePortal')
Note: Veja TracBrowser para ajuda no uso do navegador do trac.
 

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