source: publico/il.spdo/trunk/il/spdo/browser/forms/area.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 IArea
10from il.spdo.db import Area
11from il.spdo.config import Session
12
13class AreaAddForm(base.AddForm):
14    """Formulário de cadastro de uma área do organograma.
15    """
16    grok.context(INavigationRoot)
17    grok.name('add-area')
18    grok.require('cmf.ManagePortal')
19
20    schema = IArea
21    label = _(u'Adcionar Área')
22    description = _(u'Formulário de cadastro de uma área do organograma da instituição.')
23
24    def createAndAdd(self, data):
25        area = Area()
26        area.nome = data['nome']
27        area.chefia_id = data['chefia_id']
28        session = Session()
29        session.add(area)
30        session.flush()
31        self.area_id = area.id
32        return area
33
34    def nextURL(self):
35        url_base = self.context.absolute_url()
36        self.redirect(url_base + '/@@show-area?id=' + str(self.area_id))
37
38
39class AreaEditForm(base.EditForm):
40    """Formulário de edição de uma área do organograma.
41    """
42
43    grok.context(INavigationRoot)
44    grok.name('edit-area')
45    grok.require('cmf.ManagePortal')
46
47    schema = IArea
48    label = _(u'Editar Área')
49    descrition = _(u'Formulário de edição de uma área do organograma da instituição.')
50
51    def getArea(self, area_id):
52        if area_id is not None:
53            session = Session()
54            area = session.query(Area).get(area_id)
55            if area is not None:
56                return area
57        return None
58
59    def getContent(self):
60        return self.getArea(self.rec_id())
61
62    def applyChanges(self, data):
63        content = self.getArea(data['id'])
64        if content:
65            for key, value in data.items():
66                setattr(content, key, value)
67            session = Session()
68            session.flush()
69            return True
70        return False
71
72    def nextURL(self):
73        url_base = self.context.absolute_url()
74        self.redirect(url_base + '/@@show-area?id=' + self.rec_id())
75
76
77class AreaShowForm(base.ShowForm):
78    grok.context(INavigationRoot)
79    grok.name('show-area')
80    grok.require('cmf.ManagePortal')
81
82    schema = IArea
83    label = _(u'Detalhes Área')
84    description = _(u'Formulário de visualização de uma área do organograma da instituição.')
85
86    def getArea(self, area_id):
87        if area_id is not None:
88            session = Session()
89            area = session.query(Area).get(area_id)
90            if area is not None:
91                return area
92        return None
93
94    @property
95    def area_id(self):
96        self.rec_id()
97
98    def removeItem(self):
99        #XXX: implementar validação e exclusão.
100        print 'Item não foi removido!'
101
102    def getContent(self):
103        return self.getArea(self.rec_id())
104
105    def nextURL(self):
106        url_base = self.context.absolute_url()
107        self.redirect(url_base + '/@@list-area')
108
109    def editURL(self):
110        url_base = self.context.absolute_url()
111        self.redirect(url_base + '/@@show-area?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.