Tipps zu Migrationen und zukunftsfähigeren Produkten.
Starten Sie Ihre Zope-Instanz im Debug-Modus (ZOPE_INSTANCE/bin/zopectl fg
) und nutzen anschließend Ihr Produkt. Überprüfen Sie, ob auf der Konsole deprecation warnings ausgegeben werden.
Entfernen Sie den plone_deprecated
-Skin-Layer und überprüfen, ob Ihre Anwendung anschließend noch problemlos funktioniert.
Auf dem QuickInstaller basierende Installationen sollten stattdessen GenericSetup-Profile verwenden.
Ab CMF 2.1.0 steht addWorkflowFactory
nicht mehr zur Verfügung. Workflows können von da an nur noch mit dem GenericSetup-Tool erstellt werden. Zur Migration installieren Sie einfach Ihr Produkt in einer Plone2.5-Site und exportieren den Workflow anschließend mit dem GenericSetup-Tool. Bevor Sie schließlich die alte Python-basierte Workflow-Definition aus dem Extensions-Ordner löschen, achten Sie darauf, dass ggf. die workflow scripts erhalten bleiben.
manage_
-Methoden sollten durch events
ersetzt werden.
Um die Permissions aus dem CMFCore-Produkt zu importieren, sollte in der __init__.py
Datei folgender (rückwärtskompatibler) Code verwendet werden:
try: # for Plone 2.5 and above
from Products.CMFCore import permissions as CMFCorePermissions
except: # for Plone 2.1
from Products.CMFCore import CMFCorePermissions
Archetypes 1.5, das zusammen mit Plone 3.0 ausgeliefert wird, enthält kein Transaction
-Modul mehr, statt:
from Products.Archetypes import transaction
kann nun einfach folgendes verwendet werden:
import transaction
Zope hat die Syntax, um Transaktionen zu importieren geändert. Ab Zope 2.10.x wird die bisherige Syntax:
get_transaction().commit(1)
durch folgende ersetzt:
transaction.commit(1)
transaction
muss selbstverständlich zunächst importiert werden.
CMF hat seit längerer Zeit ContentFactoryMetadata
durch FactoryTypeInformation
ersetzt. Der Aufruf:
from Products.CMFCore.TypesTool import ContentFactoryMetadata
sollte also ersetzt werden durch:
from Products.CMFCore.TypesTool import FactoryTypeInformation
Berechtigungen wie z.B. cmf.ModifyPortalContent
müssen in zcml
angegeben werden:
<include package="Products.CMFCore" file="permissions.zcml"
xmlns:zcml="http://namespaces.zope.org/zcml"
zcml:condition="have plone-41" />
Dabei wird zcml:condition
in Plone 4.1.3 definiert in der meta.zcml
-Datei:
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:meta="http://namespaces.zope.org/meta">
<meta:provides feature="plone-4" />
<meta:provides feature="plone-41" />
</configure>