TriZPUG Camp Five - I
Mikel y yo conformamos el pequeño equipo diplomático que CodeSyntax ha enviado a North Carolina, con motivo del Camp5. Philipp von Weitershausen pone a nuestra disposición toda su experiencia con Zope3 y sus dotes comunicativas y docentes para que nos sumerjamos en el desarrollo de componentes web con Zope3.
Primer día
Hoy ha sido el primer día del Camp5. Las primeras de las ocho horas que ha durado la jornada se han ido volando entre el registro, la configuración de la red y otros prolegómenos.
Philip ha liderado el Camp5 y nos ha preparado una introducción a Zope3 bastante práctica. Es decir, sin mencionar siquiera la palabra interfaz, nos hemos visto tecleando ejemplos reales de Zope3.
El plantamiento ha sido “from scratch”. Aprende zope3 desde cero. Incluso nos hemos detenido bastante en la programación ZPT. A pesar de eso hemos aprendido un montón.
De entre todo lo que Philip nos ha aclarado, podemos destacar lo siguiente:
BrowserView vs BrowserPage
Las clases que heredan de BrowserView y BrowserPage tienen sutiles pero interesantes diferencias:
Las primeras estan asociadas a una plantilla en el zcml y suelen contener métodos auxiliares que se invocan desde esta plantilla.
Las segundas implementan un método “__call__” que puede terminar renderizando una plantilla o no.
La primera clase es más adecuada cuando queremos publicar algo en la web y la segunda cuando necesitamos hacer un cálculo cuyo principal objetivo no es publicar nada, por ejemplo, recibir datos de un formulario.
Registro de componentes con ZCML
También hemos conocido un poco por encima cual es el mecanismo de despliegue de los componentes Zope3. El pegamento que une todos los objetos se escribe en ZCML. Todo comienza cuando una instancia arranca y lee el “/etc/site.zcml”. Este fichero contiene sentencias que apuntan a el resto de los ZCMLs que se leerán uno por uno en el orden indicado.
Estos ZCMLs solo se leen una vez al inicio de zope, por eso es necesario reiniciarlo cuando se añaden nuevos componentes.
formlib
La última parte del dia la hemos dedicado a formlib. Es la solución que propone zope3 para no escribir los tediosos formulario. Esta librería proporciona una forma de reutilizar código y para eso dispone de varios elementos:
Esquemas (schemas). Describen semánticamente el tipo de datos que apareceran en un formulario (ej: un entero y una fecha, un texto opcional y una lista de booleanos, etc.) El esquema habla del tipo de datos que manejará el formulario pero no se dice nada de cómo aparecerán en el formulario.
Los campos (Fields) relacionan una porción del esquema con una parte del formulario. Especifican la forma en que estos campos se reflejarán en el formulario. (ej: la validación de los datos de entrada).
Cada campo lo renderiza un widget. Un widget es un trozo de código reutilizable y puede ser más o menos complejo (desde un sencillo input hasta una lista autorellenable repleta de ajax).
Por último, el formulario (form), tiene asociada una plantilla que renderiza el widget correspondiente a cada campo.
Cada elemento es personalizable y dependiendo del grado de customización debemos atacar el problema por uno de los componentes u otro.
La estructura de estos componentes es compleja, como lo suelen ser los formularios. Formlib no ofrece una solución rápida y facil pero rígida y reducida, sino una flexible y potente herramienta de complejidad moderada.
Las transparencias de Philip
El material sobre el que ha trabajado Philip tiene una gran calidad, al igual que su libro de zope3. Recomiendo conseguir una copia en papel de la segunda edición. Creo que merece la pena. Pero ¡ojo!, por lo que cuentan los organizadores del Camp5, Springer tarda casi el doble que amazon en mandarte el libro.
01-intro.pdf, 02-getstarted.pdf, 03-simplepages.pdf, 04-complexpages.pdf, 05-forms.pdf

Share your source code
Tagging the planet