Programación en castellano
Inicio > Tutoriales > Lenguajes de script > Python > Zope: El servidor de aplicaciones libre
-Tutoriales

Zope: El servidor de aplicaciones libre


Los objetos y productos Zope

. Introducción

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

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados