Personal tools
rt.atmigrator: pensioniamo i vecchi tipi con un click

Come dare un degno congedo a dei valorosi archetype

Mar 20, 2013

rt.atmigrator: pensioniamo i vecchi tipi con un click

Archetype che non servono più e contenuti da migrare in un altro tipo? Un prodotto ci può aiutare a concedere loro il meritato riposo in modo facile ed intuitivo

Di cosa potrei parlare? Cosa ho fatto ultimamente di interessante da poter condividere?

Quando sto per scrivere un nuovo post per il blog, il problema è sempre il solito: trovare un argomento interessante da proporre.

Sfortunatamente per voi, la risposta è sempre la stessa: migrazioni!

Ormai le migrazioni sono diventate il mio pane quotidiano. Il lavoro dell'ultimo anno è stato prevalentemente quello di prendere per mano vecchi e appesantiti portali Plone e dargli nuova vita migrandoli alla versione più aggiornata.

Come già detto in un precedente articolo, spesso le migrazioni sono anche il momento ideale in cui fare un'analisi del portale e individuare eventuali archetypes creati ad hoc che, col tempo, sono diventati inutili o addirittura da eliminare, perché mai utilizzati correttamente.

recycleSe quei contenuti li vogliamo proprio eliminare, li cancelliamo direttamente dal portale e non ci si pensa più.
Discorso diverso, invece, se questi vanno mantenuti e magari "convertiti" in qualcosa di più standard, come ad esempio i contenuti base di Plone.

Ultimamente ho dovuto pensare proprio a come migrare 4-5 vecchi Archetypes ormai inutilizzati e farli diventare dei tipi base di Plone (Cartelle, Pagine ed Eventi).

La prima idea è stata quella di creare una serie di procedure come descritto nell'articolo di cui parlavo prima, ma poi mi sono chiesto se non esistesse un modo per rendere parametrizzabile questa operazione senza dover scrivere ogni volta 200 metodi uguali.

Visto che la migrazione che mi interessava era molto base e non avevo bisogno di eseguire nessuna operazione intermedia, ho deciso di creare un piccolo prodottino che mi aiutasse: rt.atmigrator.

Si tratta di un pacchetto che va inserito nel buildout e non ha bisogno di essere installato.

Fornisce una semplice vista (http://url-del-sito/@@migrate-types) che non fa altro che chiedere all'utente 2 cose:

  • Il tipo di partenza (selezionabile tra i tipi aggiungibili nel portale)
  • Il tipo di destinazione (selezionabile tra i tipi aggiungibili nel portale).

atmigrator

Una volta confermato, viene lanciato un metodo come quelli già descritti, che esegue la migrazione con Products.contentmigration utilizzando come parametri i 2 tipi impostati nel form.

Completata la migrazione, nel log c'è una descrizione completa delle operazioni svolte (ed eventualmente il traceback degli errori) e l'utente viene informato di quanti elementi sono stati aggiornati.

Il prodotto di per sé è molto semplice, dato che esegue una migrazione base da un tipo ad un altro.
Nulla vieta però di prevedere, in futuro, anche delle evoluzioni e supportare, ad esempio, una gestione di filtri per determinare i contenuti da migrare (oltre al solo tipo, magari anche un percorso o lo stato di pubblicazione), oppure delle operazioni pre e post migrazione per determinati tipi.

Il sorgente è disponibile su github, quindi si può consultare ed eventualmente modificare in un attimo.

Filed under: , ,
comments powered by Disqus