Eigene Upgrade-Skripte schreiben ================================ Falls ein EXTENSION-Profil zum Installieren eines Produkts verwendet wurde, können Upgrade steps des Generic Setup Tools verwendet werden, um Migrationsskripte zu verwalten. Dabei kann das Generic Setup Tool die Versionsnummer entweder aus der ``version.txt``-Datei im Wurzelverzeichnis des Produkts auslesen oder aus einer ``metadata.xml``-Datei im Installationsprofil. Entsprechend wurde das ``Default``-Profil von ``vs.policy`` ergänzt um ``src/vs.policy/vs/policy/profiles/default/metadata.xml``:: Policies for www.veit-schiele.de 1.3 Die *Upgrade steps* werden dann in ``src/vs.policy/vs/policy/configure.zcml`` registriert:: ... ... Hier wird die Aktualisierung von Version 1.0 auf 1.1 definiert, wobei die Funktion ``v1_0_to_v1_1()`` aufgerufen wird. Die Funktion ist definiert in ``src/vs.policy/vs/policy/upgrades.py``:: from Products.CMFCore.utils import getToolByName def v1_0_to_v1_1(portal_setup): portal_url = getToolByName(portal_setup, 'portal_url') portal = portal_url.getPortalObject() front_page = portal['front-page'] front_page.setTitle('Welcome to Veit Schiele communication design') Die Aktualisierung von 1.1 auf 1.2 teilt sich in zwei Teile auf, ``v1_1_to_v1_2a`` und ``v1_1_to_v1_2b``. Dabei sorgt ``sortkey`` für die richtige Reihenfolge bei der Aktualisierung über mehrere Versionen:: Migrationsprofil ================ Falls eine große Anzahl von Migrationen durchlaufen werden soll, kann sich ein spezielles ``Extension``-Profil empfehlen:: Zunächst wird das ``Extension``-Profil in ``profiles/migrations/v1_2_to_v1_3`` für das Interface ``Products.CMFPlone.interfaces.IMigratingPloneSiteRoot`` registriert, wodurch das Profil nicht beim Erstellen der Site oder in Plone’s Website-Konfiguration zum *Hinzufügen/Entfernen von Produkten* angezeigt wird. Anschließend wird noch ein *upgrade step* registriert, der das Profil angibt. Schließlich muss noch das Verzeichnis ``src/vs.policy/vs/policy/profiles/migrations/v1_2_to_v1_3`` und darin die entsprechenden XML-Dateien erzeugt werden.