source: publico/il.spdo/trunk/il/spdo/browser/forms/protocolo.py @ 5370

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

Novo módulo com global utility que define API geral do sistema.

File size: 3.3 KB
Linha 
1# -*- coding: utf-8 -*-
2import os
3import datetime
4
5from five import grok
6from zope.component import getUtility
7
8from plone.app.layout.navigation.interfaces import INavigationRoot
9from Products.statusmessages.interfaces import IStatusMessage
10
11from il.spdo.browser.forms import base
12from il.spdo.config import MessageFactory as _
13from il.spdo.interfaces import IAddProtocolo
14from il.spdo import db
15from il.spdo.config import Session, PATH_ANEXOS
16from il.spdo.api import ISPDOAPI
17
18class ProtocoloAddForm(base.AddForm):
19    """Formulário de cadastro de um Protocolo.
20    """
21    grok.context(INavigationRoot)
22    grok.name('add-protocolo')
23    grok.require('cmf.ManagePortal')
24
25    schema = IAddProtocolo
26    label = _(u'Novo Protocolo')
27    description = _(u'Formulário de cadastro de Protocolo.')
28
29    def createAndAdd(self, data):
30        api = getUtility(ISPDOAPI)
31        user = api.getUser()
32
33        protocolo = db.Protocolo(
34                data['tipoprotocolo'],
35                data['tipodocumento_id'],
36                data['numero_documento'],
37                data['data_emissao'],
38                data['assunto'],
39                data['situacao_id']
40            )
41        session = Session()
42        session.add(protocolo)
43        session.flush()
44        self.protocolo_id = protocolo.id
45
46        observacao = None
47        if data['observacao']:
48            observacao = db.Observacao(
49                    protocolo_id=protocolo.id,
50                    texto=data['observacao'],
51                )
52            session.add(observacao)
53
54        tramite = db.Tramite(
55            protocolo_id=protocolo.id,
56            area_id=user.area_id,
57            data_disponibilizacao=None,
58            data_recebimento=datetime.datetime.now(),
59            acao=_(u'Protocolo Criado')
60            )
61        session.add(tramite)
62        session.flush()
63
64        log = db.LogModificacao(
65                usuario=user.email;
66                protocolo_id=protocolo.id,
67                tramite_id=tramite.id,
68                observacao_id=observacao.id if observacao is not None else None,
69                detalhes=_(u'Cadastro de novo protocolo.')
70            )
71        session.add(log)
72
73        # salva os arquivos anexados ao protocolo se existirem
74        anexos = data['anexos'] if data['anexos'] is not None else []
75        if anexos:
76            api.addAnexos(protocolo.id, anexos)
77
78        pessoas_origem = data['origem']
79        pessoas_destino = data['destino']
80        for pessoa_id in pessoas_origem:
81            pessoa_origem = db.PessoaOrigem(
82                    protocolo_id=protocolo.id,
83                    pessoa_id=pessoa_id,
84                )
85            session.add(pessoa_origem)
86
87        for pessoa_id in pessoas_destino:
88            pessoa_destino = db.PessoaDestino(
89                    protocolo_id=protocolo.id,
90                    pessoa_id=pessoa_id,
91                )
92            session.add(pessoa_destino)
93
94        permissao = db.Permissao(
95                protocolo_id=protocolo.id,
96                area_id=user.area.id,
97                leitura=True,
98                escrita=True,
99            )
100        session.add(permissao)
101
102        return protocolo
103
104    def nextURL(self):
105        url_base = self.context.absolute_url()
106        self.redirect(url_base + '/@@show-protocolo?id=' + str(self.protocolo_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.