Conjunto de mudanças 5350 no repositório publico


Ignorar:
Timestamp:
11/10/2011 21:03:18 (8 anos atrás)
Autor:
fabianosantos
Mensagem:

Implementação do formulário de pessoa.

Localização:
il.spdo/trunk/il/spdo
Arquivos:
2 adicionados
6 editados

Legenda:

Não Modificado
Adicionado
Removido
  • il.spdo/trunk/il/spdo/browser/forms/area.py

    r5348 r5350  
    1616    grok.context(INavigationRoot)
    1717    grok.name('add-area')
    18     grok.require('zope2.View')
     18    grok.require('cmf.ManagePortal')
    1919
    2020    schema = IArea
  • il.spdo/trunk/il/spdo/browser/views.py

    r5347 r5350  
    44from plone.app.layout.navigation.interfaces import INavigationRoot
    55
    6 from il.spdo.db import Area
     6from il.spdo.db import Area, Pessoa
    77from il.spdo.config import Session
    88
     
    3131    def add_url(self):
    3232        return self.context.absolute_url() + '/@@add-area'
     33
     34class PessoaListView(grok.View):
     35    grok.name('list-pessoa')
     36    grok.context(INavigationRoot)
     37    grok.require('cmf.ManagePortal')
     38
     39    pessoas = []
     40
     41    def update(self):
     42        session = Session()
     43        items = session.query(Pessoa).all()
     44        self.pessoas = []
     45        for pessoa in items:
     46            self.pessoas.append({
     47               'nome': pessoa.nome,
     48               'id': pessoa.id,
     49               'email': pessoa.email
     50               })
     51   
     52    def show_url(self, pessoa_id):
     53        return self.context.absolute_url() + '/@@show-pessoa?id=%s' % pessoa_id
     54
     55    def add_url(self):
     56        return self.context.absolute_url() + '/@@add-pessoa'
  • il.spdo/trunk/il/spdo/db.py

    r5349 r5350  
    55from sqlalchemy.orm import relationship, backref, sessionmaker
    66from sqlalchemy.ext.declarative import declarative_base
    7 from il.spdo.config import TABLE_ARGS, CREATE_ALL_TABLES
     7from il.spdo.config import TABLE_ARGS, CREATE_ALL_TABLES, Session
    88from il.spdo.interfaces import IArea, IPessoa
    99from random import choice
     
    1515
    1616if __name__ == '__main__':
    17     # http://www.sqlalchemy.org/docs/06/dialects/mysql.html#known-issues
    18     engine = create_engine('mysql://root:interlegis@localhost/spdo?charset=utf8&use_unicode=0', pool_recycle=3600)
     17
     18    #from Products.Five import zcml
     19    #from Products.Five import fiveconfigure
     20    #fiveconfigure.debug_mode = True
     21    #import il.spdo
     22    #zcml.load_config('configure.zcml', il.spdo)
     23    #zcml.load_config('configure.zcml', il.spdo)
     24
     25    #http://www.sqlalchemy.org/docs/06/dialects/mysql.html#known-issues
     26    #engine = create_engine('mysql://root:interlegis@localhost/spdo?charset=utf8&use_unicode=0', pool_recycle=3600)
     27    engine = create_engine('mysql://root:interlegis@localhost/spdo')
    1928    Session = sessionmaker(bind=engine)
    2029
     
    8392    senha = Column(String(20), nullable=False)
    8493   
    85     def __init__(self, nome, email, endereco=None, bairro=None, cep=None, cidade=None, uf=None,
    86                  telefone=None, cpf_cnpj=None, tipopessoa='F', contato=None, area=None):
     94    def __init__(self, nome, email, endereco=None, bairro=None, cep=None, cidade=None, uf_id=None,
     95                 telefone=None, cpf_cnpj=None, tipopessoa='F', contato=None, area_id=None):
    8796        self.nome = nome
    8897        self.email = email
     
    9099        self.bairro = bairro
    91100        self.cidade = cidade
    92         self.uf_id = uf
     101        self.uf_id = uf_id
    93102        self.telefone = telefone
    94103        self.cpf_cnpj = cpf_cnpj
    95104        self.tipopessoa = tipopessoa
    96105        self.contato = contato
    97         self.area_id = area
     106        self.area_id = area_id
    98107        self.senha = geraSenha(8)
    99108
     
    303312
    304313    # Pessoa
    305     ps1 = Pessoa('Xiru', 'xiru@xiru.org', area=a1.id)
     314    ps1 = Pessoa(u'Xiru', u'xiru@xiru.org', area=a1.id)
    306315    session.add(ps1)
    307     ps2 = Pessoa('Tião Macalé', 'tiao@macale.net', area=a2.id)
     316    ps2 = Pessoa(u'Tião Macalé', u'tiao@macale.net', area=a2.id)
    308317    session.add(ps2)
    309     ps3 = Pessoa('ZÉ Pequeno', 'john@small.org', 'Rua dos bobos, 0', 'Centro', 95096000, 'Caxias do Sul', uf1.id, '54 3226.1234', '12312312312', 'F', 'Baiano', a3.id)
     318    ps3 = Pessoa(u'ZÉ Pequeno', u'john@small.org', 'Rua dos bobos, 0', 'Centro', 95096000, 'Caxias do Sul', uf1.id, '54 3226.1234', '12312312312', 'F', 'Baiano', a3.id)
    310319    session.add(ps3)
    311     ps4 = Pessoa('BOPE', 'cpt.nascimento@bope.gov.br', 'Morro dos Caveiras, 100', 'Favela do Alemão', 12312000, 'Rio de Janeiro', uf2.id, '11 1212.1234', '12312312312', 'O', 'Capitão Nascimento', a3.id)
     320    ps4 = Pessoa(u'BOPE', 'cpt.nascimento@bope.gov.br', 'Morro dos Caveiras, 100', u'Favela do Alemão', 12312000,
     321                 'Rio de Janeiro', uf2.id, '11 1212.1234', '12312312312', 'O', u'Capitão Nascimento', a3.id)
    312322    session.add(ps4)
    313323    session.flush()
  • il.spdo/trunk/il/spdo/db.zcml

    r5327 r5350  
    55
    66    <include package="z3c.saconfig" file="meta.zcml" />
    7     <db:engine name="spdo_engine" url="mysql://root:interlegis@localhost/spdo" />
     7    <db:engine name="spdo_engine" url="mysql://root:interlegis@localhost/spdo?charset=utf8" />
    88    <db:session name="spdo_session" engine="spdo_engine" />
    99
  • il.spdo/trunk/il/spdo/interfaces.py

    r5347 r5350  
    1414class IArea(form.Schema):
    1515
    16      form.mode(id='hidden')
    17      id = schema.Int(
     16    form.mode(id='hidden')
     17    id = schema.Int(
    1818        title=_(u'ID'),
    1919        description=_(u'Identidicador da área.'),
    2020        required=False)
    2121
    22      nome = schema.TextLine(
     22    nome = schema.TextLine(
    2323        title=_(u'Nome'),
    24         description=_(u'Informe o nome da área.'))
     24        description=_(u'Informe o nome da área.'),
     25        max_length=100)
    2526
    26      chefia_id = schema.Choice(
     27    chefia_id = schema.Choice(
    2728        title=_(u'Chefia'),
    2829        description=_(u'Selecione a área de chefia.'),
     
    3031        vocabulary='il.spdo.areas-vocab')
    3132
    32      #TODO:validar também os cliclos, impedindo que uma área escolha
    33      # como área pai qualquer um dos seus descendentes.
    34      @interface.invariant
    35      def vefifyAreaPai(area):
    36          if area.id and area.chefia_id and area.id == area.chefia_id:
    37              raise interface.Invalid(_(u'Área de chefia não pode ser ela mesma.'))
     33    #TODO:validar também os cliclos, impedindo que uma área escolha
     34    # como área pai qualquer um dos seus descendentes.
     35    @interface.invariant
     36    def vefifyAreaPai(area):
     37        if area.id and area.chefia_id and area.id == area.chefia_id:
     38            raise interface.Invalid(_(u'Área de chefia não pode ser ela mesma.'))
     39
     40class IPessoa(form.Schema):
     41    """Define um tipo Pessoa que pode ser física ou jurídica.
     42    """
     43    form.fieldset('endereco',
     44            label=u"Endereço",
     45            fields=['endereco', 'bairro', 'cep', 'cidade', 'uf_id']
     46        )
     47
     48    form.fieldset('lotacao',
     49            label=u"Lotação",
     50            fields=['area_id']
     51        )
     52
     53    form.mode(id='hidden')
     54    id = schema.Int(
     55        title=_(u'ID'),
     56        description=_(u'Identidicador interno da Pessoa.'),
     57        required=False)
     58
     59    nome = schema.TextLine(
     60        title=_(u'Nome'),
     61        description=_(u'Nome completo da Pessoa.'),
     62        max_length=100)
     63
     64    email = schema.TextLine(
     65        title=_(u'Email'),
     66        description=_(u'Informe o email da Pessoa.'),
     67        max_length=50)
     68
     69    tipopessoa = schema.Choice(
     70        title=_(u'Tipo Pessoa'),
     71        description=_(u'Informe se a pessoa é física ou jurídica.'),
     72        default=u'F',
     73        vocabulary='il.spdo.tipopessoa-vocab')
     74
     75    cpf_cnpj = schema.TextLine(
     76        title=_(u'CPF/CNPJ'),
     77        description=_(u'Informe o CPF ou CNPJ de acordo com o tipo de pessoa: física ou organização.'),
     78        max_length=20,
     79        required=False)
     80
     81    contato = schema.TextLine(
     82        title=_(u'Contato'),
     83        description=_(u'Pessoa ou organização de contato.'),
     84        max_length=100,
     85        required=False)
     86
     87    telefone = schema.TextLine(
     88        title=_(u'Telefone'),
     89        description=_(u'Informe o telefone com DDD.'),
     90        max_length=30,
     91        required=False)
     92
     93    area_id = schema.Choice(
     94        title=_(u'Área'),
     95        description=_(u'Área da instituição que a pessoa faz parte.'),
     96        required=False,
     97        vocabulary='il.spdo.areas-vocab')
     98    endereco = schema.TextLine(
     99        title=_(u'Endereço'),
     100        description=_(u'Logradouro, número e complemento.'),
     101        max_length=100,
     102        required=False)
     103
     104    bairro = schema.TextLine(
     105        title=_(u'Bairro'),
     106        description=_(u'Informe o bairro.'),
     107        max_length=50,
     108        required=False)
     109
     110    cep = schema.TextLine(
     111        title=_(u'CEP'),
     112        description=_(u'Informe o CEP: apenas os números'),
     113        max_length=8,
     114        min_length=8,
     115        required=False)
     116
     117    cidade = schema.TextLine(
     118        title=_(u'Cidade'),
     119        description=_(u'Informe a cidade.'),
     120        max_length=50,
     121        required=False)
     122
     123    uf_id = schema.Choice(
     124        title=_(u'UF'),
     125        description=_(u'Selecione o estado da federação.'),
     126        required=False,
     127        vocabulary='il.spdo.uf-vocab')
  • il.spdo/trunk/il/spdo/vocabulary.py

    r5327 r5350  
    1111from il.spdo.config import Session
    1212from il.spdo import db
     13from il.spdo.config import MessageFactory as _
     14
    1315
    1416class AreasVocabulary(object):
     
    2325provideUtility(AreasVocabularyFactory, IVocabularyFactory,
    2426               name='il.spdo.areas-vocab')
     27
     28
     29class UFVocabulary(object):
     30     implements(IVocabularyFactory)
     31
     32     def __call__(self, context):
     33         session = Session()
     34         query = session.query(db.UF).order_by(db.UF.nome).all()
     35         return SimpleVocabulary([SimpleTerm(a.id, a.id, a.nome) for a in query])
     36
     37UFVocabularyFactory = UFVocabulary()
     38provideUtility(UFVocabularyFactory, IVocabularyFactory,
     39               name='il.spdo.uf-vocab')
     40
     41def TipoPessoaVocabulary(context):
     42    return SimpleVocabulary([
     43        SimpleTerm('F','F', _(u'Física')),
     44        SimpleTerm('O','O', _(u'Organização')),
     45    ])
     46
     47provideUtility(TipoPessoaVocabulary, IVocabularyFactory,
     48               name='il.spdo.tipopessoa-vocab')
    2549
    2650
Note: Veja TracChangeset para ajuda no uso do visualizador de conjunto de mudanças.
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.