Depois de estudar por um bom tempo com atenção o livro no site do framework
web2py eu pude construir minha primeira aplicação (application), que se refere a uma estrutura em html para o processo de registrar, selecionar, editar, deletar (crud:) funcionários e seus dados, como nome, matrícula, RG, CPF, data de nascimento, foto, etc. utilizando web2py. Tomei o cuidado de não hardwire nenhuma URL, contando com a ajuda dos helpers e do scaffolding e laytout da aplicação default. Ou seja, com a exceção de 'funcionario.nome' e 'funcionario.id', a aplicação poderia ser usada para quaisquer modelos semelhantes. Vamos lá então. Primeiro criamos o modelo em models/db.py, colocando o código abaixo depois do que já havia lá:
db.define_table( 'funcionario',
Field('nome','string',notnull=True,length=50),
Field('email',label='Email',requires=IS_EMAIL()),
Field('nascimento','date'),
Field('foto', 'upload',requires=IS_EMPTY_OR(IS_IMAGE())),
Field('matricula', 'string',length=8,unique=True, label='Matrícula'),
Field('sexo','string',notnull=True, requires=IS_IN_SET(['Masculino','Feminino'])),
Field('rg', 'string',length=10,unique=True,label='RG'),
Field('cpf','string',length=11,unique=True,label='CPF'),
Field('end', 'string',length=40,label='Endereço'),
Field('tel','string',length=12, label='Telefone residencial'),
Field('funcao','string', label='Função',requires=IS_IN_SET(['Docente',
'Técnico',
'Secretário',
'Desenhista'])),
Field('area','string',label='Área', requires=IS_IN_SET(['indeterminado',
'Ciëncias Térmicas',
'Materiais e Processos de Fabricação',
'Mecânica dos Sólidos e Projetos'])),
Field('formacao','string'),
Field('titulacao', 'string',length=100,label='Titulação'),
Field('telefone','string',length=12, label='Telefone funcional'), )
db.funcionario.id.writeable=db.funcionario.id.readable=False
Observe que foi definida uma table denominada 'funcionario' (em sqlite) usando DAL e com vários campos de interesse, alguns validadores. Em particular IS_IN_SET([ , , ]), que produzirá um drop-down menu, e 'upload', que produzirá um widget de upload/download/delete na 'foto' do funcionario, quando construídos mais tarde nas views. Esta tabela abrigará todos os dados sobre os funcionários. Observe também como os labels aparecerão nas representações e formulários (forms) finais. Ah sim, tudo foi editado/construído usando o editor TTW (Through The Web) padrão do próprio web2py.
Na parte II discutiremos as actions e as views, bem como as modificações no layout.html e no menu.py.