Osobní nástroje
Nacházíte se zde: Úvod Nápověda Jak-na-to Obnovení staršího objektu v Plone
Mailing list

Mailing list o Plone, oznámení novinek atd. Přihlásit/odhlásit nebo procházet archív můžete na této adrese.

 

Obnovení staršího objektu v Plone

Smazali jste si v Plone důležitý objekt nebo složku a UNDO už nefunguje ?

UNDO v Plone ne vždy funguje jak by mělo, zvlášť v případech, kdy se pokoušíme obnovit objekt, který byl změněn/smazán před několika dny nebo hodinami (podle toho jak často se v portálu ukládá). Existuje však možnost vyexportovat objekt v podstatě k libovolnému datu (až po poslední pack databáze).

Na pomoc přichází balíček dm.historical, který umožňuje nahlížet do ZODB k určitému datu.

Pžedpokládejme tedy, že chceme obnovit složku /plone/novinky, která byla omylem smazána 4.7.2010. Poslední pack databáze proběhl 1.7.2010, takže máme velkou šanci na úspěch. Pokud by byl pack proveden po 4.7., pak by byla šance na obnovení objektu nulová (pokud by neexistovaly zálohy Data.fs z předchozího data). Provedeme tedy následující kroky:

  • do buildout.cfg (eggs) přidejte dm.historical a znovu spusťte buildout (bin/buildout)
  • spusťte instanci v debug režimu: bin/instance debug
  • po zobrazení debug výzvy (>>>) zadejte následující kód:

from DateTime import DateTime
from dm.historical import getObjectAt
site = getObjectAt(app.plone, DateTime('2010-07-04 14:00:00')) 
folder = site['novinky']
folder.manage_exportObject()

  • Výše uvedený kód aktivuje verzi portálu k danému datu a vyexportuje ZEXP verzi příslušného objektu (folder).
  • ukončete Zope debug režim (Ctrl+D)
  • v adresáři var/instance by měl být nyní vytvořen objekt novinky.zexp (přesné umístění souboru může záviset na konfiguraci buildoutu, jestli je použit ZEO klient atd.)
  • zkopírujte ZEXP soubor do adresáře import vaší instance (pravděpodobně parts/instance/import)
  • spusťte instanci standardním způsobem a v ZMI naimportujte ZEXP (tlačítko Import/Export v ZMI/plone složce)
  • je vhodné spustit reindex portal_catalog, případně Clear&Rebuild nebo napsat vlastní skript, který reindexuje příslušnou část portálu.

To je vše, v "ostrém" portálu by nyní měl být objekt /novinky ve verzi k uvedenému datu.

Původní verze článku je na zopyx.de