Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió...

60
Python – Zope - Python – Zope - Plone Plone Adolfo Bruno GCUFAL __________________________________________ ___ Maceió – 16 de Agosto de 2008

Transcript of Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió...

Page 1: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Python – Zope - Python – Zope - PlonePlone

Adolfo BrunoGCUFAL

_____________________________________________

Maceió – 16 de Agosto de 2008

Page 2: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

SequênciaSequência

CMSPythonZopePloneAplicação

_____________________________________________

Page 3: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

CMSCMSContent Management Content Management

SystemSystem

Page 4: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

O que é um CMS?O que é um CMS?

É um gerenciador para websites, portais e

intranets, cujo objetivo é estruturar e facilitar a

criação, administração, distribuição, publicação

e disponibilidade da informação.

_____________________________________________

Page 5: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Sites tendem a crescer desordenadamente

Dar o “poder” da edição ao usuárioReduzir o tempo de publicaçãoPublicação on-linePadronizar interfaces de apresentaçãoSeparar conteúdo, interface e lógicaSegurançaWeb 2.0

Por que usar um CMS?Por que usar um CMS?_____________________________________________

Page 6: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

PythonPython

Page 7: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Linguagem de programação de alto nível

Interpretada

Interativa

Orientada a Objetos

Tipagem dinâmica e forte

Portável

Multiparadigma

O que é Python?O que é Python?______________________________________________

Page 8: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Surgiu no Natal de 1989Criada por Guido Van

Rossum nos Países BaixosSucessora da ABCUtilizada no sistema

operacional AmoebaO nome é em homenagem

ao grupo humorístico britânico Monty Python.

História do Python?História do Python?______________________________________________

Page 9: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

IndentaçãoIndentação

Não existem blocos de comandos

A Indentação é uma característica peculiar no Python

Em linguagens como C ou PHP os blocos são delimitados por chaves, no Pascal ou Delphi pelo begin e end

______________________________________________

Page 10: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Indentação correta

def valor(self):try:

self.c = input('Valor: ')

c = self.creturn c

except:print 'Inválido!'self.valor()

Indentação Errada

def valor(self):try:self.c = input('Valor: ')c = self.creturn cexcept:print 'Inválido! 'self.valor()

______________________________________________IndentaçãoIndentação

Page 11: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________Estruturas de ControleEstruturas de Controle

Page 12: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________FunçõesFunções

Page 13: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

class ClasseOne:

def __init__(self):self.atribA =

'Atributo A'self.atribB = 10self.atrubC =

Noneself.__privado =

None

def umMetodo(self, arg1):print arg1 +

self.atribB

umaClasse = ClasseOne()

print umaClasse.atribA

umaClasse.umMetodo(2)

______________________________________________ClassesClasses

Atributos e métodos privados sempre têm dois ‘_’ antes do seu nome.

Em Python podemos utilizar herança simples e herança múltipla

Page 14: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

A utilização de listas (arrays) em Python é muito simples.

lista = [] # cria lista vazia lista = ['laranja', 'banana', 'uva'] # cria lista com 3

elementos print lista[1] # imprime ‘banana’ lista.append(‘abacaxi'); # adiciona um novo

elemento no final da lista lista. Insert(i, x) # adiciona um elemento x na

posição i lista.remove( x) # remove o elemento x lista[:2] # retorna uma nova lista com os elementos

0 a 2 lista[1:3] # retorna uma nova lista com os elementos

1 a 3

______________________________________________ListasListas

Page 15: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

ZopeZope

Page 16: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Servidor de Aplicações criado pela Digital Creations (Zope Corporation)

Liberado fonte em 1998

Interface de administração via broswer

Escrito em Python

Zope (Z Object Publishing Environment)

Servidor web, o Zserver

Banco de dados orientado a objetos, o ZODB

______________________________________________O que é Zope?O que é Zope?

Page 17: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

PostgreSQLMySQLFirebirdOracleSQL ServerODBC

______________________________________________Multi SGBDsMulti SGBDs

O Zope suporta conexões com os bancos de dados relacionais mais utilizados no mercado

Page 18: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

PlonePlone

Page 19: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Criado em 2001 por Alexander Limi e Alan Runyan

É um CMS open-source que roda sob o servidor de aplicações Zope

Lançado sobre a licença GNUCompatível com a maioria dos navegadores webAdere ao padrões webÉ extensível (através dos produtos)Fácil customização Internacionalizado para ~60 idiomasTradução sensível ao idioma do navegador

______________________________________________O que é Plone?O que é Plone?

Page 20: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

1. Passo: Instalar Zlib

1 – tar zxvf zlib-1.2.3.tar.gz2 – ./configure3 – make test4 – make install

2. Passo:

1 – vim /etc/ld.so.conf2 – Adicione: include /usr/local/include 3 – Execute o comando: ldconfig

______________________________________________A instalaçãoA instalação

Verificar se o gcc, g++ e make estão instalados

Page 21: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

3. Passo: Instalar o Python

1 – tar zxvf Python-2.4.4.tgz2 – ./configure3 – make4 – make install

______________________________________________A instalaçãoA instalação

Page 22: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

4. Passo: Instalar Imaging

1 – tar zxvf Imaging-1.1.6.tar.gz2 - Para instalar a Imaging certifique-se que a libjpeg

está instalada no sistema. Para isso execute o seguinte comando:

whereis libjpeg

Caso a saída seja:

libjpeg:

Significa que a libjpeg não está instalada.

Para instalá-la execute o comando:

apt-get install libjpeg-progs libjpeg62 libjpeg62-dev

______________________________________________A instalaçãoA instalação

Page 23: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

3- Agora altere a linha JPEG_ROOT no arquivo setup.py, para isso execute dentro do diretório Imaging-1.1.6:

vim setup.py

Procure pela linha JPEG_ROOT = NONE e a altere para JPEG_ROOT = “/usr/lib”

Salve as alterações. E siga para o próximo passo.

4 – python setup.py install

______________________________________________A instalaçãoA instalação

Page 24: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

5. Passo: Instalar o Zope

1 – tar zxvf Zope-2.9.8-final.tgz 2 – ./configure --prefix=/var/zope-2.9.8

--with-python=/usr/local/bin/python 3 – make 4 – make install 5 – useradd zope 6 – chown zope:root /var/zope-2.9.8 -R 7 – /var/zope-2.9.8/bin/mkzopeinstance.py 8 – Informar o seguinte diretório: /var/zope 9 – Informar usuário e senha da instância zope (não do

linux!) 10 – Descomentar e editar no arquivo

/var/zope/etc/zope.conf “effective-user zope” Onde zope é o usuário criado no momento da criação da instância (passo 8)

11 – chmod 755 /var/zope/log 12 – chmod 755 /var/zope/var 13 – chown zope:root /var/zope -R

______________________________________________A instalaçãoA instalação

Page 25: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

6. Passo: Instalar o Plone

1 – tar zxvf Plone-2.5.5.tar.gz2 – mv ./Plone-2.5.5 /var/zope/Products3 – chown zope:root /var/zope -R

Para iniciar o zope, execute os seguintes comandos:

Iniciar: /var/zope/bin/zopectl startReiniciar: /var/zope/bin/zopectl restartParar: /var/zope/bin/zopectl stop

______________________________________________A instalaçãoA instalação

Page 26: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

O Plone disponibiliza objetos para criação, por

padrão são:Arquivo, Evento, Imagem, Link, Notícia, Pasta,

PastaEsperta, Página.

Assim que é criado algum objeto o Plone atribui uma data de criação;

Um objeto pode atribuir: data (criação, efetivação, expiração, inicial, final), criador, estado (esboço público, publicado, privado, pendente).

______________________________________________Criando conteúdoCriando conteúdo

Page 27: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Arquivo: Enviar arquivo externo para o site;

Evento: Informações de eventos que ficam no calendário;

Imagem: Pode ser referenciada em documentos e exibida em álbuns;

Link: Um link para recursos interno ou externo;

Notícia: Um anúncio que aparecerá no portlet de notícia e na lista de notícia;

Pasta: Pode conter outros itens;

Pasta Esperta: Realiza busca que é atualizada automaticamente e pode exibir itens que casam com um critério especificado;

Página: Pode conter conteúdo, uma página do site.

______________________________________________Objetos e sua diferençasObjetos e sua diferenças

Page 28: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Qual o produto? RichDocument

Onde achar? www.plone.org

Como instalar?Copiar o arquivo descompactado para a pasta

Products;

Reiniciar o servidor;

Ir ao site > Configuração do site > Adicionar remover

produtos. E instalar o produto.Ou então,Ir na ZMI -> Portal Quickinstaller -> Escolher o

produto e instalar.

______________________________________________Instalando ProdutosInstalando Produtos

Page 29: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

http://localhost:8080/manage

portal_actionsportal_catalogportal_propertiesportal_quickinstallerportal_skinsportal_typesportal_workflowportal_cssportal_javascripts

______________________________________________

Ferramentas do Plone no Ferramentas do Plone no ZopeZope

Page 30: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Responsável pelo cadastro e alteração de ações do portal, por exemplo: site_actions, document_actions, portal_tabs;

Title = TítuloId = Identificação únicaURL = Caminho para script/página que será

executadoPermission = Permissão necessária para

executar a açãoCategory = Categoria que a ação pertenceVisible = É visível ou não

______________________________________________portal_actionsportal_actions

Page 31: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Baseado no ZCatalog do ZOPE;

Indexa todos os objetos do Plone;

Adiciona índices, metadados e políticas que facilitam a busca de objetos no Plone;

______________________________________________portal_catalogportal_catalog

Page 32: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Define as principais propriedades para a árvore de navegação e também para o site em geral;

______________________________________________portal_propertiesportal_properties

Page 33: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Responsável por adicionar e remover produtos Plone;

______________________________________________portal_portal_quickinstallerquickinstaller

Page 34: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Localização dos templates do Plone e dos produtos;

______________________________________________portal_portal_skinsskins

Page 35: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Gerencia os tipos de objetos do Plone

Aba Contents -> Lista todos os tipos de objetos

Properties -> Detalhes do objetoActions -> Ações possíveis de executar

pelo objetoAba Aliases -> Determina os templates

de Visão,Edição, Propriedades, compartilhamento

dos objetos;

______________________________________________portal_portal_typestypes

Page 36: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Determina o workflow para cada objeto do Plone

Aba Workflow -> Determina o workflow do portal_type

Aba Contents -> Lista os workflows existentes

______________________________________________portal_portal_workflowworkflow

Page 37: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Em portal_css são registrados todos os css do plone;

Em portal_javascripts são registrados todos os javascripts do plone;

______________________________________________

portal_portal_css - css - portal_portal_javascriptsjavascripts

Page 38: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Zope Page Templates (ou linguagem de templates Zope) é um instrumento do servidor de aplicação Zope para a geração de páginas web dinâmicas.

O objetivo é proporcionar um fluxo de tarefas natural entre designers e programadores.

______________________________________________

Zope Page Templates Zope Page Templates (ZPT)(ZPT)

Page 39: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

DTML “Document Template Markup Language” (Linguagem de Marcação para Modelos de Documentos) é a linguagem de apresentação e script baseada em tag do Zope.

Podemos usar o DTML em dois tipos de objetos no Zope, DTML Documents e DTML Methods

DTML sofre por uma deficiência para separarapresentação, lógica e conteúdo (dados).

O namespace do DTML adiciona muita “mágica”, sem permitir controle suficiente.

______________________________________________ZPT x DTMLZPT x DTML

Page 40: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Page Templates usam a Template Attribute Language (TAL). TAL consiste em atributos especiais para as tags HTML. Por exemplo, um titulo dinâmico de uma página deveria ficar assim:

<title tal:content="here/title">Page Title</title>

______________________________________________ZPT na práticaZPT na prática

Page 41: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Para criar um Page Template vamos até a ZMI:

Em seguida:

______________________________________________ZPT na práticaZPT na prática

Page 42: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________ZPT na práticaZPT na prática

<html><body>

<p>Esse é o <b tal:content="template/title">título</b>

</p></body>

</html>

Page 43: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________

ZPT na prática - ZPT na prática - ExpressõesExpressões

A expressão, "template/title" do exemplo anterior é uma expressão de caminho ou path expression. Esse é o tipo mais comum de expressão.

Outras expressões:

'request/URL': A URL da requisição web atual. 'user/getUserName': O nome do usuário

autenticado. 'container/objectIds': Uma lista dos ids dos

objetos que estão na mesma pasta do template.

Page 44: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________

ZPT na prática - ZPT na prática - Comandos TALComandos TAL

Page 45: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________ZPT na práticaZPT na prática

No Page Template que criamos, a linha:

Esse é o <b tal:replace="template/title"> título</b>

Renderizou:Esse é o Meu Template.

Portanto,

A tag <b> foi trocado pelo valor de “template/title”

Page 46: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________ZPT na práticaZPT na prática

Outra maneira de inserir texto é com a instrução:

tal:content

Uso similar ao tal:replace, porém o a tag não éremovida e o valor é inserido dentro dela;

Ex.:<head><title tal:content="template/title">Titulo</title></head>

Page 47: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________ZPT na prática ZPT na prática - - Repetindo Repetindo estruturasestruturas

<table border="1" width="100%">

<tr>

<th>Número</th>

<th>Id</th>

<th>Meta-Type</th>

<th>Titulo</th>

</tr>

<tr tal:repeat="item container/objectValues">

<td tal:content="repeat/item/number">#</td>

<td tal:content="item/getId">Id</td>

<td tal:content="item/meta_type">Meta-Type</td>

<td tal:content="item/title">Title</td>

</tr>

</table>

Page 48: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________ZPT na prática ZPT na prática - - Repetindo Repetindo estruturasestruturas

A instrução tal:repeat na linha da tabela significa “repita essa linha para cada item na minha lista de objetos do container”.

A instrução coloca os objetos da lista na variável item, um de cada vez (essa variável é conhecida como variável de repetição), e faz uma copia da linha usando essa variável.

O valor de "item/getId" em cada linha é o id do objeto para a linha, e também como em "item/meta_type" e "item/title".

Page 49: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________ZPT na prática – ZPT na prática – Elementos Elementos condicionaiscondicionais

Usando a instrução tal:condition podemos checarvários tipos de condições.

tal:condition deixa a tag e seu conteúdo no lugar se a

expressão é verdadeira, mas remove-os se for falsa.

O Zope considera o numero zero, uma string embranco, uma lista vazia, e a variável de ambientenothing como falsos valores.

Sendo assim quase todos outros valore sãoconsiderados como verdadeiros, incluindo númerosdiferentes de zero, e strings com algum valor (atémesmo espaços em branco!).

Page 50: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________ZPT na prática – ZPT na prática – Elementos Elementos condicionaiscondicionais

<div tal:define=“items container/objectValues”><table tal:condition= "items" border="1" width="100%">

<tr><th>Número</th><th>Id</th><th>Meta-Type</th><th>Titulo</th>

</tr><tr tal:repeat="item items">

<td tal:content="repeat/item/number">#</td>

<td tal:content="item/getId">Id</td><td tal:content="item/meta_type">Meta-

Type</td><td tal:content="item/title">Title</td>

</tr></table>

</div>

Page 51: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________ZPT na prática – ZPT na prática – Controle de Controle de atributosatributos

É possível alterar os atributos das tags através instrução tal:attributes

Ex.:<a href="link" tal:attributes="href

here/getILink; ">link</a>

Resultado:<a href= "linkToSomeWhere">link</a>

Page 52: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________

ZPT na prática – ZPT na prática – Definindo Definindo variáveisvariáveis

Você pode definir suas próprias variáveis usando a

instrução: tal:define;

Ex.:

<ul tal:define="items container/objectIds" tal:condition="items"><li tal:repeat="item items">

<p tal:content="item">id</p></li>

</ul>

Page 53: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________ZPT na práticaZPT na prática

É possível ter mais de uma instrução numa única tag

HTML, nesse caso eles são executados na seguinte

ordem:

1 - define2 - condition3 - repeat4 - content ou replace5 - attributes6 - omit-tag

Page 54: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________ZPT na prática – Chamadas de ZPT na prática – Chamadas de scriptsscripts

É possível utilizar chamadas de scripts Python ao

invés das expressões de caminho(path expressions);

Para isso usa-se o termo ‘python:’

Ex.:

<div tal:content=“python:item.getId ()“>id</div>

Page 55: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________

ZPT na prática – Expressões ZPT na prática – Expressões stringstring

Expressões string permitem unir com facilidade

expressões de caminho com texto. Todo o texto

depois do termo string: é procurado por expressões de

caminho. Cada expressão deve ser precedida do sinal

de dólar ($).

Ex.:

"string:Somente texto. Sem path expressions. "

"string:Seu nome é ${user/getUserName}!"

Page 56: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________ZPT na prática – MacrosZPT na prática – Macros

As page templates tem a capacidade de reutilização da ‘aparência’ e elementos em várias páginas;

Para isso utilizamos as Macros. Elas definem uma

seção da página que pode ser reutilizada por outras;

Uma macro pode ser uma página inteira, ou somente uma parte como cabeçalho ou rodapé;

Macros são definidos por atributos chamados de

METAL(Macro Expansion Tag Attribute Language)

Page 57: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________ZPT na prática – MacrosZPT na prática – MacrosDefinindo uma macro:

<p metal:define-macro="copyright">

Copyright 2001, <em>Foo, Bar, and Associates</em> Inc.

</p>

Utilizando a Macro

<b metal:use-macro="container/master_page/macros/copyright">

Aqui fica a macro!

</b>

Resultado

<p> Copyright 2001, <em>Foo, Bar, and Associates</em> Inc.</p>

Page 58: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Aplicação com Aplicação com ArchetypesArchetypes

Framework para desenvolvimento ágil✔ Dá suporte aos tipos do Plone✔ Gera automaticamente✔ Formulários✔ Visões

ArchGenXML✔ Geração automática de códigos

Archetypes✔ Baseado em modelos

______________________________________________

Page 59: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

______________________________________________ReferênciasReferênciaswww.plone.orgwww.zope.orgLista zope-ptwww.python.org

[email protected]

Meu contatoMeu contato

Page 60: Python – Zope - Plone Adolfo Bruno GCUFAL _____________________________________________ Maceió – 16 de Agosto de 2008.

Muito Obrigado!!Muito Obrigado!!