source: publico/il.spdo/trunk/il/spdo/browser/forms/pessoa.py @ 5351

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

Ajuste na navegação dos formulários: após edição e novo cadastro
redireciona para o formulário de visualização do item.

File size: 3.1 KB
Linha 
1# -*- coding: utf-8 -*-
2from five import grok
3
4from plone.app.layout.navigation.interfaces import INavigationRoot
5from Products.statusmessages.interfaces import IStatusMessage
6
7from il.spdo.browser.forms import base
8from il.spdo.config import MessageFactory as _
9from il.spdo.interfaces import IPessoa
10from il.spdo.db import Pessoa
11from il.spdo.config import Session
12
13class PessoaAddForm(base.AddForm):
14    """Formulário de cadastro de uma pessoa.
15    """
16    grok.context(INavigationRoot)
17    grok.name('add-pessoa')
18    grok.require('cmf.ManagePortal')
19
20    schema = IPessoa
21    label = _(u'Adicionar Pessoa')
22    description = _(u'Formulário de cadastro de uma Pessoa.')
23
24    def createAndAdd(self, data):
25        del data['id'] #id is auto generated and hidden on form
26        pessoa = Pessoa(**data)
27        session = Session()
28        session.add(pessoa)
29        session.flush()
30        self.pessoa_id = pessoa.id
31        return pessoa
32
33    def nextURL(self):
34        url_base = self.context.absolute_url()
35        self.redirect(url_base + '/@@show-pessoa?id=' + str(self.pessoa_id))
36
37
38class PessoaEditForm(base.EditForm):
39    """Formulário de edição de uma pessoa.
40    """
41
42    grok.context(INavigationRoot)
43    grok.name('edit-pessoa')
44    grok.require('cmf.ManagePortal')
45
46    schema = IPessoa
47    label = _(u'Editar Pessoa')
48    descrition = _(u'Formulário de edição de uma pessoa.')
49
50    def getPessoa(self, pessoa_id):
51        if pessoa_id is not None:
52            session = Session()
53            pessoa = session.query(Pessoa).get(pessoa_id)
54            if pessoa is not None:
55                return pessoa
56        return None
57
58    def getContent(self):
59        return self.getPessoa(self.rec_id())
60
61    def applyChanges(self, data):
62        content = self.getPessoa(data['id'])
63        if content:
64            for key, value in data.items():
65                setattr(content, key, value)
66            session = Session()
67            session.flush()
68            return True
69        return False
70
71    def nextURL(self):
72        url_base = self.context.absolute_url()
73        self.redirect(url_base + '/@@show-pessoa?id=' + self.rec_id())
74
75
76class PessoaShowForm(base.ShowForm):
77    grok.context(INavigationRoot)
78    grok.name('show-pessoa')
79    grok.require('cmf.ManagePortal')
80
81    schema = IPessoa
82    label = _(u'Detalhes Pessoa')
83    description = _(u'Formulário de visualização de uma pessoa.')
84
85    def getPessoa(self, pessoa_id):
86        if pessoa_id is not None:
87            session = Session()
88            pessoa = session.query(Pessoa).get(pessoa_id)
89            if pessoa is not None:
90                return pessoa
91        return None
92
93    @property
94    def pessoa_id(self):
95        self.rec_id()
96
97    def removeItem(self):
98        #XXX: implementar validação e exclusão.
99        print 'Item não foi removido!'
100
101    def getContent(self):
102        return self.getPessoa(self.rec_id())
103
104    def nextURL(self):
105        url_base = self.context.absolute_url()
106        self.redirect(url_base + '/@@list-pessoa')
107
108    def editURL(self):
109        url_base = self.context.absolute_url()
110        self.redirect(url_base + '/@@edit-pessoa?id=%s' % self.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.