Tipps

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>