Zope: El servidor de aplicaciones libre

Estamos aqu� de vuelta con la tercera entrega del curso de Zope. Tras un primera entrega en la que se present� Zope y una segunda en la que se demostr� a nivel pr�ctico como hacer nuestro primer web con Zope, vamos a adentrarnos m�s en los dominios de Zope y, m�s en concreto, con los objetos y productos de apoyo a Zope. Productos que en su mayor parte han sido desarrollados por la comunidad Zope, normalmente bajo la licencia ZPL, y que logran hacer de Zope una plataforma mucho m�s potente y vers�til.

Entre los productos que nos encontramos en Zope podemos destacar el que sirve para enviar correo electr�nico de una forma sencilla desde Zope, el que crea un Wiki Web, un lugar donde poder discutir ideas entre un grupo de personas o el famoso Squishdot, que sirve para poder montar nuestro propio weblog al m�s puro estilo Slashdot o Barrapunto en unos minutos.

A lo largo de este art�culo aprender�s c�mo meter objetos dentro de tu web, algo que ya hemos visto, como insertar nuevos objetos dentro del entorno Zope y las laboreas de administraci�n entorno al control de productos y objetos de Zope.

.�Los Productos Zope

Antes de comenzar con los detalles de que es un producto Zope, d�nde encontrarlos y para que sirven, vamos a ver de que Productos Zope disponemos en nuestra instalaci�n est�ndar. En este caso me voy a referir a la configuraci�n que viene con Debian Potato, aunque es de esperar que sea id�ntica a la que un usuario cualquier de Zope se puede encontrar en la versi�n 2.1.6. La versi�n que tiene de Zope la puede consultar el usuario en la pantalla de gesti�n de Zope dentro de la carpeta "Control Panel".

El Panel de Control de Zope

Dentro de esta versi�n de Zope los objetos que aparecen instalados por defectos los podemos observar en la siguiente imagen:

Objetos disponibles en Zope por defecto

De entre toda esta lista de objetos hay un grupo de ellos que ya hemos utilizado como son DTML Document o Folder, entre otros. Vamos a ir describiendo para que sirve cada uno de ellos, aunque no sin recordar antes que en Zope todo son objetos: las carpetas, los ficheros, las im�genes ... todo. Lo que ocurre es que en la interfaz de Zope les han dado un significado familiar para que nos sea m�s sencillo su uso. Pero es importante recordar este concepto, y que todos estos objetos residen en la base de datos orientada a objetos de Zope. Lo que se nos muestra en esta lista son las clases de objetos que tenemos disponibles, que luego aumentaremos, y nosotros elegimos una clase de objeto y creamos una instancia, si hablamos con la terminolog�a de la programaci�n orientada a objetos. Puntualizado este concepto vamos con esa descripci�n de los objetos Zope que aparecen.

  • DTML Document: este objeto sirve para a�adir nuevos documentos HTML a nuestro sitio. Dentro de esas p�ginas HTML se puede incluir c�digo DTML, tal y como hicimos a la hora de construir las p�ginas de la empresa Rayo de Luz.
  • DTML Method: este objeto es muy similar a DTML Document, pero est� m�s orientado a la creaci�n de m�todos que interact�en con Zope en funci�n de las acciones y los datos que proporcione el cliente que accede al sitio.
  • External Method: nos permite definir funciones en Python y crear objetos asociadas a ellas. Esos objetos pueden ser utilizados luego desde Zope para invocar a dichas funciones.
  • File: permite crear objetos a partir de ficheros disponibles fuera de Zope. No olvidemos que todos los objetos Zope viven dentro de la base de datos de objetos de Zope, es decir, Zope no puede acceder a ficheros locales de disco. Gracias a este objeto podemos importar dentro de la base de datos de Zope ficheros. Una vez dentro de Zope ya podremos acceder a ellos desde otros objetos Zope.
  • Folder: la forma de organizar los objetos Zope dentro del sitio se realiza tambi�n utilizando la abstracci�n de carpetas en la que se clasifican los objetos. Los objetos Folder (carpeta) nos permiten guardar dentro de ellos a otros objetos, para organizar la estructura de objetos como si fueran ficheros y directorios. Asociados a los objetos Folder tenemos una carpeta de usuarios, para controlar el acceso a esas carpetas, y el la posibilidad de crear de forma autom�tica un objeto "index_html", de tipo DTML Document, que se mostrar� cuando alguien intente acceder al objeto Folder. Recordemos que en el n�mero anterior de la serie de Zope ya creamos ficheros de usuarios que controlaban el acceso a determinados directorios.
  • Image: este objeto nos permite importar a Zope im�genes. Una vez dentro de Zope, ya pueden ser utilizadas dentro de los documentos siguiendo el m�todo tradicional de HTML.
  • Mail Host: con este objeto creamos una puerta de acceso desde Zope a un servidor de correo a trav�s del cual podemos enviar correo. Una vez configurado de forma correcta el Mail Host, se podr� utilizar la interfaz de Zope para env�o de correo.
  • User Folder: este objeto es la base para el control de acceso a los recursos de Zope, es decir, controlar el acceso y las funciones que se pueden llevar a cabo dentro de Zope. Como ya hemos comentado, Zope destaca por su potente arquitectura de control de recursos y usuarios. Vimos en el n�mero anterior como podemos crear para una carpeta un User Folder que sea el que controle quien puede acceder y que puede hacer en esa carpeta, y en todas las carpetas que cuelguen de esta.
  • Version: este objeto pone al descubierto otra de las potencias de Zope: el control de versiones que lleva. Todos los objetos dentro de Zope tienen controlado las modificaciones que se hacen sobre ello. De este modo, podemos saber que se cambio y cuando, y poder deshacer los cambios que se llevaron a cabo. La potencia del "Undo" de Zope es realmente impresionante permitiendo deshacer casi cualquier operaci�n que se haya producido sobre el sistema. Con este objeto, podemos crear una nueva versi�n del sitio, activarla y comenzar a trabajar sobre ella. Esta versi�n y todo su contenido son privados y no se har�n p�blicos hasta que no decidamos que todo est� acabado y probado. De esta forma los desarrolladores pueden trabajar tranquilamente con la propia versi�n en producci�n, las personas autorizadas pueden ir viendo como avanza el desarrollo y su publicaci�n ser� tan sencilla como decirle al objeto Version que se ha terminado el desarrollo y las pruebas de esa Version y que pase a p�blico todo el trabajo. Realmente potente, �verdad? Hablaremos m�s sobre ello.
  • Z Gadfly Database Connection: para poder acceder desde Zope a las bases de datos externas, se crean lo que se llamada adaptadores de Zope. Estos adaptadores exportan hacia Zope una interfaz com�n a los objetos, es decir, que proporcionan una forma de acceder com�n a cualquier base de datos para Zope. Esto permite que una aplicaci�n que trabaja sobre MySQL pueda pasar a trabajar sobre Postgres con un simple cambio a la hora de elegir el adaptador. Este objeto, Z Gadfly Database Connection, es el que nos permite crear una conexi�n a la base de datos Gadfly. Esta base de datos se distribuye con licencia similar a la BSD. Este adaptador se incluye por defecto con Zope para que se pueda practicar la forma de acceder a las bases de datos desde Zope, unos de los puntos m�s fuertes de Zope. Para acceder a una base de datos desde Zope, se activa la conexi�n a la base de datos a trav�s de un manejador adecuado, en este caso Z Gadfly Database, y se pasan a ejecutar los llamados ZSQL Methods, que pasamos a detallar a continuaci�n.
  • Z SQL Method: estos objetos nos permiten crear peticiones SQL contra las bases de datos que tengan adaptadores en Zope. Existen adaptadores para las principales bases de datos (MySQL, Postgres, Oracle ...) y los Z SQL Methods son independientes de la base de datos, tan s�lo necesitan una conexi�n por el que poder ejecutarse. A la hora de crearse la petici�n SQL, se selecciona a trav�s de que conexi�n se quiere llevar a cabo la petici�n. Sobre las bases de datos hablaremos en profundidad en futuras entregas de este curso Zope.
  • Z Search Interfaces: con este objeto crearemos interfaces de b�squeda en bases de datos de una forma muy sencilla. Lo usual es seleccionar un Z SQL Method a partir del cual se crea un formulario HTML y se prepara una hoja de resultado. Este objeto nos permite ahorrar mucho tiempo de desarrollo y facilita en gran medida el dise�o de interfaces de b�squeda en bases de datos.
  • Z Catalog: en Zope todo son objetos que se almacenan en una base de datos. Esto es fundamental a la hora de permitir hacer b�squedas complejas y muy potentes de recursos dentro de un web Zope. Al tener registrados todos los objetos en la base de datos, se simplifica mucho el realizar interfaces de b�squedas y se abren puertas impensables en entornos tradicionales de publicaci�n web, donde las p�ginas HTML son ficheros almacenados en disco. Con los objetos Z Catalog podemos catalogar, similar a obtener �ndices a la documentaci�n que consideremos importante. Los cat�logos en combinaci�n con Z Search Interfaces nos proporcionan un mecanismo muy potente para hacer b�squedas dentro de todo el contenido de nuestro sitio web, como vamos a poder ver en lo que resta de este art�culo.

.�Catalogar y Buscar en un sitio Zope

Despu�s de analizar todos los objetos Zope que tenemos por defecto dentro de una instalaci�n est�ndar de Zope nada mejor que mostrar un uso pr�ctico de dos de ellos para terminar de familiarizarnos con su uso.

El objetivo es crear una interfaz de b�squeda dentro de todo el sitio Rayo de Luz, que creamos en la anterior entrega del curso. Era un sitio muy sencillo con un grupo de carpetas que conten�an la informaci�n de cada departamento. Esta informaci�n es previsible que vaya creciendo con el tiempo y necesitamos poder acceder a ella de una forma sencilla y flexible. Y como vas a ver, esto en Zope es realmente sencillo y potente.

.�Catalogar la informaci�n

Durante el trascurso de la anterior entrega del curso creamos el sitio de la empresa "Rayo de Luz". Era un sitio muy sencillo con una p�gina principal desde la que se pod�a acceder a los distintos departamentos de la compa��a. El resultado que obtuvimos se puede observar en la siguiente figura.

El sitio Rayo de Luz

Nuestro objetivo en esta ocasi�n es a�adir un nuevo enlace a esta p�gina a una interfaz de b�squeda dentro de todo el sitio. Como ya hemos comentado, los sistemas de informaci�n de las compa��as, si han sido bien implantados, tienen una gran tendencia de crecimiento y los sistemas de b�squeda se vuelven fundamentales para poder localizar con facilidad informaci�n.

Dentro de Zope, todos los sitios no son m�s que un conjunto de objetos en una base de datos, por lo que las b�squedas se resumen en poder acceder a la base de datos Zope por distintos campos y hacer b�squedas utiliz�ndolos. El lector familiarizado con las bases de datos entender� que el que todo este en base de datos simplifica mucho el proceso de b�squeda, adem�s de permitir hacer b�squedas bastante complejas.

Para poder buscar dentro del contenido de Rayo de Luz lo primero es crear un cat�logo con todos los objetos sobre los que queremos buscar. Para ello, y desde la interfaz de gesti�n, nos vamos a la carpeta rayodeluz y a�adimos un nuevo objeto ZCatalog.

Creaci�n del Cat�logo de Rayo de Luz

Para crear un objeto de tipo cat�logo tan s�lo hay que proporcionar dos datos. Cual es el identificador del cat�logo, que es la palabra que usar�n otros objetos Zope para poder acceder a �, y cual es el t�tulo del cat�logo.

Datos de creaci�n del Cat�logo de Rayo de Luz

Bien, una vez que tenemos creado el cat�logo hay que ir a configurarlo y crearlo. El objeto Cat�logo es realmente potente y nos permite configurarlo para poder especializarlo en determinadas tareas. La interfaz principal de dicho objeto la podemos observar en la siguiente figura.

Interfaz de control de un Cat�logo Zope

Lo primero es a�adir objetos al cat�logo. Inicialmente los cat�logos se crean vac�os y hay que ir a la solapa "Find Items to ZCatalog" (Encontrar Objetos para ZCatalog) para crear un cat�logo inicial sobre el que se realizar�n las b�squedas. Dentro de dicha solapa se especifican los criterios a seguir para encontrar los objetos a catalogar, es decir, los objetos para los que se obtendr�n una serie de �ndices que formar�n el cat�logo y que nos permitir�n hacer b�squedas r�pidas sobre ellos.

Selecci�n de Objetos en un Cat�logo Zope

Las opciones de las que disponemos son m�ltiples. Podemos catalogar s�lo un tipo de objetos, utilizando los identificadores de los objetos, su contenido, su fecha de modificaci�n y los permisos que tienen los objetos. En nuestro caso, vamos a irnos al caso m�s sencillo y vamos a pedirle que nos catalogue todos los objetos, algo que se debe evaluar en sitios con mucha informaci�n, pero que para nuestro caso es perfectamente v�lido ya que a�n hay poca informaci�n y adem�s, sabemos que Zope escala muy bien por lo que podemos estar tranquilos de cara al futuro. Sin modificar pues ninguna opci�n pulsamos el bot�n de "Find" (Buscar) con lo que el objeto ZCatalog pasa a buscar en toda la base de datos Zope todos los objetos que est�n dentro de la carpeta "rayodeluz", los indexa y crea el cat�logo. El resultado lo podemos ver en la siguiente figura.

Resultado de la catalogaci�n de Objetos en un Cat�logo Zope

Ha encontrado un total de 13 objetos con los que ha creado 13 registros dentro del cat�logo. �Qu� �ndices ha creado para buscar? El objeto Catalog dispone de la posibilidad de definici�n de los �ndices que se generar�n bajo la solapa "Indexes" de la interfaz de gesti�n del objeto Cat�logo, pero no vamos a entrar en esos detalles ya que nos alejar�an demasiada de este ejemplo b�sico de uso de cat�logos y b�squedas en Zope.

Bueno, ahora ya tenemos el cat�logo creado pero poco podemos hacer con �l. Necesitamos crear una interfaz que nos permita hacer b�squedas sobre el cat�logo, de cara a que nuestros usuarios puedan f�cilmente localizar la informaci�n que necesitan. Ha llegado el momento de echar mano de Z Search Interface, el objeto con el que crear interfaces de b�squeda es coser y cantar.

.�B�squedas en el cat�logo

Utilizamos el procedimiento habitual para a�adir un nuevo objeto Z Search Interface a la carpeta "rayodeluz" tras lo que se nos piden una serie de datos para poder crear la interfaz de b�squedas.

Creaci�n de la Interfaz de B�squedas del Cat�logo

Este objeto crea dos partes. Una es la interfaz de b�squeda y la otra es la p�gina con el informe de resultados. El primer dato a proporcionar es sobre que objeto queremos hacer las b�squedas. Este objeto deber� ser un objeto Zope que exporte una interfaz que permita realizar b�squedas sobre �l. Por ejemplo los Z SQL Method sirven. Desde la interfaz de b�squedas pasamos una serie de par�metros que luego se utilizan en el Z SQL Method para construir la petici�n SQL y consultar la base de datos. Otro tipo de objetos que se pueden utilizar con la interfaz de b�squedas de Zope son los cat�logos, que es precisamente el caso que nos ocupa. Por ello seleccionamos entre los objetos disponibles para hacer b�squedas a "catalogo_rayodeluz" y damos identificadores y t�tulos a las p�ginas de b�squeda y presentaci�n de resultados. Le damos a a�adir y veremos que han aparecido dos nuevos objetos dentro de la carpeta "rayodeluz". Son "buscar_rayodeluz" y "datos_rayodeluz", que son objetos del tipo DTML Method creados de forma autom�tica por Z Search Interface y que son los que implementan el formulario HTML que nos va a permitir hacer las b�squedas y la p�gina de presentaci�n de resultados de la b�squeda.

Nuevos objetos de b�squeda y presentaci�n de resultados

Ha llegado el momento de ver que es lo que realmente hemos creado. Para ello nos accedemos a la interfaz de b�squedas y vemos a ver de que opciones disponemos.

P�gina de b�squeda en Rayo de Luz

Como vemos se mantiene la cabecera y pie de la p�gina por lo que no se pierde la identidad del sitio. Vemos la potencia de los mecanismos de adquisici�n que ya comentamos en anteriores entregas del curso y que permiten detalles como que las cabeceras y pie de p�gina se compartan de forma transparente e integrada. Hemos creado una interfaz de b�squedas y sin hacer nada por nuestra parte se ha reutilizado la cabecera y pie por defecto.

En el formulario que se nos presenta podemos buscar por todos los campos por los que los objetos han sido indexados. Estos campos ya dijimos que se pod�a modificar dentro del propio cat�logo aunque si los cambios, deberemos de volver a generar el interfaz de b�squedas. Vemos que nos podemos olvidar totalmente de como se crea el formulario HTML y del nombre de los campos y a que CGI se van a enviar los datos, Zope se encarga de todo esto por nosotros. Si queremos que se nos muestren todos los datos que existen en el cat�logo, basta con que no rellenemos ning�n campo y se nos devolver�n todos los registros del cat�logo.

Resultados con todos los objetos en Rayo de Luz

Las posibilidades que se abren con este tipo de b�squedas son muy diversas y bas�ndonos en ellas, podemos lograr mecanismos de localizaci�n de informaci�n utilizando caracter�sticas diversas muy potentes.

.�Conclusiones

Hemos llegado a la conclusi�n de este art�culo a partir de la cual le lector tiene una visi�n m�s completa de lo que se puede llegar a hacer con Zope.

Hemos hecho un repaso general a todos los objetos Zope gen�ricos y nos hemos centrado en dos de ellos, Z Search Interface y z Catalog, los cuales nos han permitido ver lo sencillo y potente de su uso.

En futuras entregas del curso pasaremos a presentar objetos que no forman parte de la distribuci�n de Zope y que han sido desarrollados por la comunidad de Zope, los zopistas. Junto a estos nuevos objetos, tambi�n comentaremos c�mo se usan las bases de datos desde Zope, poniendo ejemplos de MySQL y Postgres. Esperamos que esta nueva entrega haya sido del agrado del lector y que nos siga leyendo el mes que viene.

.�Referencias

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP