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