source: publico/il.spdo/trunk/il/spdo/browser/forms/tramite.py @ 5448

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

Adicionado formularios para situacao, tipo de documento e entrega, uf. Revisado formularios de protocolo, tramite.

File size: 2.5 KB
Linha 
1# -*- coding: utf-8 -*-a
2
3# TODO: revisar imports
4import datetime
5from five import grok
6from zope.component import getMultiAdapter, getUtility
7from plone.app.layout.navigation.interfaces import INavigationRoot
8from Products.statusmessages.interfaces import IStatusMessage
9from il.spdo.browser.forms import base
10from il.spdo.config import MessageFactory as _
11from il.spdo.interfaces import IAddTramite
12from il.spdo.db import Tramite, Protocolo, LogModificacao, Permissao
13from il.spdo.config import Session
14from il.spdo.api import ISPDOAPI
15
16class TramiteAddForm(base.AddForm):
17    """Formulário de tramitação de protocolo.
18    """
19
20    grok.context(INavigationRoot)
21    grok.name('add-tramite')
22    grok.require('cmf.ManagePortal')
23
24    schema = IAddTramite
25    label = _(u'Tramitação de Protocolo')
26    description = _(u'Formulário de tramitação de um protocolo.')
27
28    # TODO: revisar e refatorar esse método, transferindo toda lógica
29    # para a API. Esse metodo deve ficar semelhante aos demais métodos
30    # createAndAdd dos demais formularios
31    def createAndAdd(self, data):
32        api = getUtility(ISPDOAPI)
33        user = api.getUser()
34        protocolo = api.getProtocolo()
35
36        # TODO: avaliar a necessidade de associar os anexos a
37        # tramitação para permitir que quem tramitou possa remover os
38        # anexos que adicionou, sem modificar os demais anexos
39        api.addAnexos(protocolo.id, data['anexos'])
40
41        session = Session()
42        copia = len(data['areas']) > 1
43        for area_id in data['areas']:
44
45            tramite = Tramite(
46                    protocolo_id=protocolo.id,
47                    area_id=area_id,
48                    data_disponibilizacao=datetime.datetime.now(),
49                    data_recebimento=None,
50                    acao=data['acao'],
51                    copia=copia,
52                )
53            session.add(tramite)
54            session.flush()
55
56            log = LogModificacao(
57                usuario=user.email,
58                protocolo_id=protocolo.id,
59                tramite_id=tramite.id,
60                detalhes=_(u'Novo Tramite'),
61            )
62            session.add(log)
63
64        return True
65
66    # TODO: revisar esse codigo, comparando com o
67    # forms.protocolo.nextURL. Testar o que ocorre quando pressiona-se o
68    # botão cancelar.
69    def nextURL(self):
70        api = getUtility(ISPDOAPI)
71        url_base = self.context.absolute_url()
72        self.redirect(url_base + '/@@show-protocolo?id=' + api.rec_id())
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.