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 prctico como hacer nuestro primer web con Zope, vamos a adentrarnos ms en los dominios de Zope y, ms 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 ms potente y verstil.

Entre los productos que nos encontramos en Zope podemos destacar el que sirve para enviar correo electrnico 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 ms puro estilo Slashdot o Barrapunto en unos minutos.

A lo largo de este artculo aprenders cmo meter objetos dentro de tu web, algo que ya hemos visto, como insertar nuevos objetos dentro del entorno Zope y las laboreas de administracin entorno al control de productos y objetos de Zope.

.Los Productos Zope

Antes de comenzar con los detalles de que es un producto Zope, dnde encontrarlos y para que sirven, vamos a ver de que Productos Zope disponemos en nuestra instalacin estndar. En este caso me voy a referir a la configuracin que viene con Debian Potato, aunque es de esperar que sea idntica a la que un usuario cualquier de Zope se puede encontrar en la versin 2.1.6. La versin que tiene de Zope la puede consultar el usuario en la pantalla de gestin de Zope dentro de la carpeta "Control Panel".

El Panel de Control de Zope

Dentro de esta versin 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 imgenes ... todo. Lo que ocurre es que en la interfaz de Zope les han dado un significado familiar para que nos sea ms 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 terminologa de la programacin orientada a objetos. Puntualizado este concepto vamos con esa descripcin de los objetos Zope que aparecen.

  • DTML Document: este objeto sirve para aadir nuevos documentos HTML a nuestro sitio. Dentro de esas pginas HTML se puede incluir cdigo DTML, tal y como hicimos a la hora de construir las pginas de la empresa Rayo de Luz.
  • DTML Method: este objeto es muy similar a DTML Document, pero est ms orientado a la creacin de mtodos que interacten con Zope en funcin 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 tambin utilizando la abstraccin 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 automtica un objeto "index_html", de tipo DTML Document, que se mostrar cuando alguien intente acceder al objeto Folder. Recordemos que en el nmero 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 imgenes. Una vez dentro de Zope, ya pueden ser utilizadas dentro de los documentos siguiendo el mtodo tradicional de HTML.
  • Mail Host: con este objeto creamos una puerta de acceso desde Zope a un servidor de correo a travs del cual podemos enviar correo. Una vez configurado de forma correcta el Mail Host, se podr utilizar la interfaz de Zope para envo 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 nmero 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 operacin que se haya producido sobre el sistema. Con este objeto, podemos crear una nueva versin del sitio, activarla y comenzar a trabajar sobre ella. Esta versin y todo su contenido son privados y no se harn pblicos hasta que no decidamos que todo est acabado y probado. De esta forma los desarrolladores pueden trabajar tranquilamente con la propia versin en produccin, las personas autorizadas pueden ir viendo como avanza el desarrollo y su publicacin ser tan sencilla como decirle al objeto Version que se ha terminado el desarrollo y las pruebas de esa Version y que pase a pblico todo el trabajo. Realmente potente, verdad? Hablaremos ms 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 comn a los objetos, es decir, que proporcionan una forma de acceder comn a cualquier base de datos para Zope. Esto permite que una aplicacin 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 conexin 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 ms fuertes de Zope. Para acceder a una base de datos desde Zope, se activa la conexin a la base de datos a travs de un manejador adecuado, en este caso Z Gadfly Database, y se pasan a ejecutar los llamados ZSQL Methods, que pasamos a detallar a continuacin.
  • 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 slo necesitan una conexin por el que poder ejecutarse. A la hora de crearse la peticin SQL, se selecciona a travs de que conexin se quiere llevar a cabo la peticin. Sobre las bases de datos hablaremos en profundidad en futuras entregas de este curso Zope.
  • Z Search Interfaces: con este objeto crearemos interfaces de bsqueda 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 diseo de interfaces de bsqueda 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 bsquedas 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 bsquedas y se abren puertas impensables en entornos tradicionales de publicacin web, donde las pginas HTML son ficheros almacenados en disco. Con los objetos Z Catalog podemos catalogar, similar a obtener ndices a la documentacin que consideremos importante. Los catlogos en combinacin con Z Search Interfaces nos proporcionan un mecanismo muy potente para hacer bsquedas dentro de todo el contenido de nuestro sitio web, como vamos a poder ver en lo que resta de este artculo.

.Catalogar y Buscar en un sitio Zope

Despus de analizar todos los objetos Zope que tenemos por defecto dentro de una instalacin estndar de Zope nada mejor que mostrar un uso prctico de dos de ellos para terminar de familiarizarnos con su uso.

El objetivo es crear una interfaz de bsqueda 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 contenan la informacin de cada departamento. Esta informacin 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 informacin

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 pgina principal desde la que se poda acceder a los distintos departamentos de la compaa. El resultado que obtuvimos se puede observar en la siguiente figura.

El sitio Rayo de Luz

Nuestro objetivo en esta ocasin es aadir un nuevo enlace a esta pgina a una interfaz de bsqueda dentro de todo el sitio. Como ya hemos comentado, los sistemas de informacin de las compaas, si han sido bien implantados, tienen una gran tendencia de crecimiento y los sistemas de bsqueda se vuelven fundamentales para poder localizar con facilidad informacin.

Dentro de Zope, todos los sitios no son ms que un conjunto de objetos en una base de datos, por lo que las bsquedas se resumen en poder acceder a la base de datos Zope por distintos campos y hacer bsquedas utilizndolos. El lector familiarizado con las bases de datos entender que el que todo este en base de datos simplifica mucho el proceso de bsqueda, adems de permitir hacer bsquedas bastante complejas.

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

Creacin del Catlogo de Rayo de Luz

Para crear un objeto de tipo catlogo tan slo hay que proporcionar dos datos. Cual es el identificador del catlogo, que es la palabra que usarn otros objetos Zope para poder acceder a , y cual es el ttulo del catlogo.

Datos de creacin del Catlogo de Rayo de Luz

Bien, una vez que tenemos creado el catlogo hay que ir a configurarlo y crearlo. El objeto Catlogo 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 Catlogo Zope

Lo primero es aadir objetos al catlogo. Inicialmente los catlogos se crean vacos y hay que ir a la solapa "Find Items to ZCatalog" (Encontrar Objetos para ZCatalog) para crear un catlogo inicial sobre el que se realizarn las bsquedas. Dentro de dicha solapa se especifican los criterios a seguir para encontrar los objetos a catalogar, es decir, los objetos para los que se obtendrn una serie de ndices que formarn el catlogo y que nos permitirn hacer bsquedas rpidas sobre ellos.

Seleccin de Objetos en un Catlogo Zope

Las opciones de las que disponemos son mltiples. Podemos catalogar slo un tipo de objetos, utilizando los identificadores de los objetos, su contenido, su fecha de modificacin y los permisos que tienen los objetos. En nuestro caso, vamos a irnos al caso ms sencillo y vamos a pedirle que nos catalogue todos los objetos, algo que se debe evaluar en sitios con mucha informacin, pero que para nuestro caso es perfectamente vlido ya que an hay poca informacin y adems, sabemos que Zope escala muy bien por lo que podemos estar tranquilos de cara al futuro. Sin modificar pues ninguna opcin pulsamos el botn de "Find" (Buscar) con lo que el objeto ZCatalog pasa a buscar en toda la base de datos Zope todos los objetos que estn dentro de la carpeta "rayodeluz", los indexa y crea el catlogo. El resultado lo podemos ver en la siguiente figura.

Resultado de la catalogacin de Objetos en un Catlogo Zope

Ha encontrado un total de 13 objetos con los que ha creado 13 registros dentro del catlogo. Qu ndices ha creado para buscar? El objeto Catalog dispone de la posibilidad de definicin de los ndices que se generarn bajo la solapa "Indexes" de la interfaz de gestin del objeto Catlogo, pero no vamos a entrar en esos detalles ya que nos alejaran demasiada de este ejemplo bsico de uso de catlogos y bsquedas en Zope.

Bueno, ahora ya tenemos el catlogo creado pero poco podemos hacer con l. Necesitamos crear una interfaz que nos permita hacer bsquedas sobre el catlogo, de cara a que nuestros usuarios puedan fcilmente localizar la informacin que necesitan. Ha llegado el momento de echar mano de Z Search Interface, el objeto con el que crear interfaces de bsqueda es coser y cantar.

.Bsquedas en el catlogo

Utilizamos el procedimiento habitual para aadir 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 bsquedas.

Creacin de la Interfaz de Bsquedas del Catlogo

Este objeto crea dos partes. Una es la interfaz de bsqueda y la otra es la pgina con el informe de resultados. El primer dato a proporcionar es sobre que objeto queremos hacer las bsquedas. Este objeto deber ser un objeto Zope que exporte una interfaz que permita realizar bsquedas sobre l. Por ejemplo los Z SQL Method sirven. Desde la interfaz de bsquedas pasamos una serie de parmetros que luego se utilizan en el Z SQL Method para construir la peticin SQL y consultar la base de datos. Otro tipo de objetos que se pueden utilizar con la interfaz de bsquedas de Zope son los catlogos, que es precisamente el caso que nos ocupa. Por ello seleccionamos entre los objetos disponibles para hacer bsquedas a "catalogo_rayodeluz" y damos identificadores y ttulos a las pginas de bsqueda y presentacin de resultados. Le damos a aadir 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 automtica por Z Search Interface y que son los que implementan el formulario HTML que nos va a permitir hacer las bsquedas y la pgina de presentacin de resultados de la bsqueda.

Nuevos objetos de bsqueda y presentacin de resultados

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

Pgina de bsqueda en Rayo de Luz

Como vemos se mantiene la cabecera y pie de la pgina por lo que no se pierde la identidad del sitio. Vemos la potencia de los mecanismos de adquisicin que ya comentamos en anteriores entregas del curso y que permiten detalles como que las cabeceras y pie de pgina se compartan de forma transparente e integrada. Hemos creado una interfaz de bsquedas 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 poda modificar dentro del propio catlogo aunque si los cambios, deberemos de volver a generar el interfaz de bsquedas. 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 catlogo, basta con que no rellenemos ningn campo y se nos devolvern todos los registros del catlogo.

Resultados con todos los objetos en Rayo de Luz

Las posibilidades que se abren con este tipo de bsquedas son muy diversas y basndonos en ellas, podemos lograr mecanismos de localizacin de informacin utilizando caractersticas diversas muy potentes.

.Conclusiones

Hemos llegado a la conclusin de este artculo a partir de la cual le lector tiene una visin ms completa de lo que se puede llegar a hacer con Zope.

Hemos hecho un repaso general a todos los objetos Zope genricos 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 distribucin de Zope y que han sido desarrollados por la comunidad de Zope, los zopistas. Junto a estos nuevos objetos, tambin comentaremos cmo 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

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
SIGUIENTE ARTÍCULO

HAY 2 COMENTARIOS
  • Anónimo dijo:

    quisier que me ayuden estoy haciendo una monografia hacerca de zope, y quiero que me digan como puedo publicar mi pagia, ya lo tengo terminado, pero no puedo publicar, mi tutor quiere revisar mi pagina desde su domicilio, por favor si alguien me puede hayudar estare muy agradecido gracias, mi correo es [email protected]

  • Anónimo dijo:

    señor Miguel Serrano esta bueno su aporte, pero quiciera que me ayude, sobre como publicar la pagina web, ya que mi direstor de tesis lo quiere revisar desde el internet, por favor ayudeme

Conéctate o Regístrate para dejar tu comentario.