2012-03-13 9 views
8

Tenemos un gran sitio enorme cuya base de datos debe prepararse para copias de desarrollo.Purga de todas las versiones anteriores de CMFEditions

¿Cómo se pueden eliminar todas las versiones antiguas de todos los elementos de contenido? De esta forma, podríamos reducir en gran medida el tamaño de los datos necesarios para transferirlos a las computadoras de desarrolladores.

Plone 4.0

Respuesta

14
  1. Ir a portal_purgepolicy y establecer el número a un número (que suelen utilizar '3' para mantener al menos algo de la historia).
  2. Ejecutar la secuencia de comandos siguiente:

    from DateTime import DateTime 
    from Products.CMFCore.utils import getToolByName 
    from Products.CMFEditions.utilities import dereference 
    
    
    policy = getToolByName(self.context, 'portal_purgepolicy') 
    catalog = getToolByName(self.context, 'portal_catalog') 
    
    for count, brain in enumerate(catalog()): 
        obj = brain.getObject() 
    
        # only purge old content 
        if obj.created() < (DateTime() - 30): 
         obj, history_id = dereference(obj) 
         policy.beforeSaveHook(history_id, obj) 
         print 'purged object ' + obj.absolute_url_path() 
    
+1

¡Super! ¡Esto también funciona en Plone 3.3! ¡Solo probado! –

+1

Se fusionará con esto después de las pruebas: http://collective-docs.readthedocs.org/en/latest/hosting/zope.html#creating-a-cleaned-data-drop –

+5

Sería bueno agregar esta utilidad a CMFEditions y exponerlo en la ZMI en alguna parte. –

4

He detalles de Plone 3 (pero tenga en cuenta que yo sepa que esto se cambia un poco en Plone 4).

En Plone 3.3 historias están todas almacenadas dentro del objeto portal_historiesstorage/repo. Ahí tienes un subobjeto _shadowStorage.

Descubrí que si elimina este objeto persistente, se crea desde cero cuando es necesario.

Esperanza esta ayuda de alguna manera

2

Aquí están las instrucciones para eliminar _shadowStorage, como Keul alusión anteriormente:

cliente

inicio ZEO en modo de depuración:

bin/client1 debug 

Entonces:

del app.yoursiteid.portal_historiesstorage._shadowStorage 
    import transaction ; transaction.commit() 

Sin garantía. No tengo idea de lo que está borrando. Aparentemente te deshaces de todas las historias.

+2

según Alec Mitchell, deshacerse del almacenamiento en la sombra simplemente borra los metadatos y si necesita borrar entradas en el depósito de almacenamiento, debe hacer otras cosas; ver https://github.com/plone/Products.CMFEditions/issues/28#issuecomment-113591175 para más información. – hvelarde

0

que encontré (en lo que probablemente fue un caso de RTFM en mi caso, pero de todos modos) que la apertura del sitio Zope (http://localhost:8080/ dicen) directamente, y la navegación de la siguiente manera:

  1. administrar la página
  2. "Panel de control"
  3. "base de datos"
  4. "principal"

me llevó a una página que ofrecía al "paquete" del Databa se y eliminar todo el historial anterior a X días de antigüedad. Esto funcionó como un regalo!

+3

Pero esto no elimina las entradas CMFEdition. Esto solo empaca la base de datos. Hay dos tipos diferentes de historias: las basadas en CMFEdition, como se solicitó aquí, y el Historial de ZODB, que está borrando con el enlace "Paquete". – jkubaile

Cuestiones relacionadas