Member of The Internet Defense League Últimos cambios
Últimos Cambios
Blog personal: El hilo del laberinto Geocaching

Recorrido recursivo y modificaciones de objetos ZOPE

Última Actualización: 17 de Enero de 2003 - Viernes

Desde Python los objetos ZOPE tienen una gran capacidad de interacción. De hecho, cuando se empieza con ZOPE, una de las cosas que más sorprende es la excelente integración de esta tecnología con Python. Es trivial recorrer un árbol ZOPE sin más que ir siguiendo los propios vínculos entre los objetos, y poco más. Por ejemplo, para acceder al objeto "prueba.html" en el contexto actual, basta con usar context["prueba.html"]. Para ver si un objeto es una carpeta, en la que habría que introducirse para realizar un recorrido recursivo, basta hacer context["objeto"].meta_type=="Folder". Así, una posible rutina Python para recorrer todo un árbol de directorios ZOPE podría ser, simplemente:

def arbol(obj) :
  a=[]
  for i in obj.objectValues() :
    id=i.getId()
    m=i.meta_type
    if m=="DTML Document" : a.append(i)
    if (m=="Folder") and (id!="temp_folder") : a.extend(arbol(i))
  return a

Esta rutina nos proporciona un listado de todos los objetos "DTML Document", obtenido de forma recursiva. Se puede invocar, por ejemplo, con un simple arbol(context). Tal cual está, esta rutina sólo atraviesa directorios "normales". Si tenemos algún Producto ZOPE que haga las funciones de directorio, pero que no lo sea, habría que reescribir la función apropiadamente. Estos detalles ya dependen de las características de cada instalación.

Evito entrar en "temp_folder" porque me da un error. Debería investigar los detalles con calma, pero no he tenido ocasión aún para ello. Si alguien conoce los detalles y tiene la atención de comunicármelos, le estaré muy agradecido. Una vez que tenemos objetos ZOPE, podemos manipularlos. Los objetos "DTML Documents" se modifican a través del método "manage_edit()", que acepta como parámetros el nuevo fuente DTML y el título del documento (puede ser una cadena vacía).

Hay varios ejemplos de uso de estas técnicas en otros artículos de esta sección.



Python Zope ©2003 jcea@jcea.es

Más información sobre los OpenBadges

Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS