[Zope-es] Modificaciones

Paulino Ruiz de Clavijo paulino en dte.us.es
Mie Dic 5 13:51:32 CET 2007


Hola, me ha pasado varias veces cambiar un tipo:

Dependiendo de lo que hagas tendrás o no que migrar los objetos de la base de 
datos, ( es decir un script que los busque y los altere convenientemente)

Te comento algunos casos:

Caso 1. Caso habitual y simple:
 Tienes un archetype y le añades un campo en el "schema" entonces:
 Te vas a archetype_tool haces un "update old schemas" y arreglado

Caso 2. Le añades un atributo a tu objeto pero fuera del esquema:
 Sol : Asegurate cuando pidas el atributo hacer: 
    getattr(object,"nuevo_atributo",None) en scripts ó
    nuevo_attr here/nuevo_attr|nothing en plantillas
    debe funcionar.

Un detalle más para los casos 1 y 2. La base de datos debe estar en escritura 
ya que zope reescribe automáticamente los objetos en cuanto son accedidos si 
detecta que han cambiado sus atributos (mas o menos)

Caso 3. Cambio la clase de las que derivé el objeto:
    Pues la liaste, probablemente tengas que migrar los objetos para 
adaptarlos eliminando los atributos que ya no se usan etc.

   En estos casos la migración se suele hacer en un script:
     paso 1: Se lee del objeto antiguo los atributos a conservar,
     paso 2: se renombra el antiguo objeto
     paso 3: Se crea un nuevo objeto del nuevo tipo, con el nombre correcto y 
los atributos.
     paso 4: Pues no se si borrar el antiguo objeto renombrado, La migración 
suele fallar varias veces.

Espero que te sirva de algo. Seguramente algunos con mas experiencia puedan 
detallarte mas situaciones.

Saludos
 
 
 


El Wednesday 05 December 2007 13:10:54 David Picó Vila escribió:
> Hola a todos.
>
> Una pregunta de método. En Plone, imaginad que creo un tipo de
> contenido y pongo en marcha un web, de manera que la base de datos
> poco a poco va conteniendo instancias de ese tipo.
>
> Si tiempo después quiero añadir un campo o quitarlo al tipo de datos,
> ¿cómo puedo procesar la base de datos para actualizar las entradas ya
> existentes?
>
> Si solamente reinstalo el producto que define el tipo, ¿qué pasa con
> las entradas antiguas? ¿Tengo que mantener las dos definiciones
> activas a la vez (¿con nombres distintos?) y después hacer algún
> script (¿cómo?) que haga la conversión? ¿Perdería así datos tipo
> autor, fecha de creación, etc.?
>
>
> Mi petición a la lista es más de referencias de documentación que una
> explicación "in situ". Entiendo que el tema no es trivial.
>
> Un saludo
> David_______________________________________________
> Zope-es mailing list
> Zope-es en aditel.org
> http://listas.aditel.org/listinfo/zope-es



-- 
Paulino Ruiz de Clavijo V.
Dpto. Tecnología Electrónica
Universidad de Sevilla


Más información sobre la lista de distribución Zope-es