[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/ - added upgrade steps for default profile and views_support profile

Yvo Schubbe cvs-admin at zope.org
Fri May 17 07:02:20 UTC 2013


Log message for revision 130244:
  - added upgrade steps for default profile and views_support profile

Changed:
  U   Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
  U   Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml
  U   Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py
  A   Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23views.py

-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt	2013-05-17 06:49:56 UTC (rev 130243)
+++ Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt	2013-05-17 07:02:19 UTC (rev 130244)
@@ -4,7 +4,8 @@
 2.3.0 (unreleased)
 ------------------
 
-- profiles: Modified Method Aliases used in type Actions.
+- profiles and upgrade: Modified Method Aliases used in type Actions.
+  Added upgrade steps for default profile and views_support profile.
 
 - Actions: Added invisible 'global/search_form' and 'global/search' Actions.
   The URLs of the search form and the search results pages are no longer

Modified: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml	2013-05-17 06:49:56 UTC (rev 130243)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml	2013-05-17 07:02:19 UTC (rev 130244)
@@ -246,6 +246,13 @@
         checker=".to23.check_root_properties"
         />
 
+    <genericsetup:upgradeStep
+        title="Upgrade type infos"
+        description="Set action url expressions."
+        handler=".to23.upgrade_type_infos"
+        checker=".to23.check_type_infos"
+        />
+
   </genericsetup:upgradeSteps>
 
   <genericsetup:upgradeStep
@@ -257,4 +264,44 @@
       sortkey="8"
       />
 
+  <genericsetup:upgradeStep
+      title="Mark 2.2 upgrade as finished"
+      source="2.1"
+      destination="2.2"
+      profile="Products.CMFDefault:views_support"
+      handler=".mark_as_finished"
+      sortkey="1"
+      />
+
+  <genericsetup:upgradeSteps
+      source="2.2"
+      destination="2.3"
+      profile="Products.CMFDefault:views_support"
+      sortkey="2">
+
+    <genericsetup:upgradeStep
+        title="Upgrade actions tool"
+        description="Add new browser views."
+        handler=".to23views.upgrade_actions_tool"
+        checker=".to23views.check_actions_tool"
+        />
+
+    <genericsetup:upgradeStep
+        title="Upgrade type aliases"
+        description="Add new browser views."
+        handler=".to23views.upgrade_type_aliases"
+        checker=".to23views.check_type_aliases"
+        />
+
+  </genericsetup:upgradeSteps>
+
+  <genericsetup:upgradeStep
+      title="Mark 2.3 upgrade as finished"
+      source="2.2"
+      destination="2.3"
+      profile="Products.CMFDefault:views_support"
+      handler=".mark_as_finished"
+      sortkey="3"
+      />
+
 </configure>

Modified: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py	2013-05-17 06:49:56 UTC (rev 130243)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py	2013-05-17 07:02:19 UTC (rev 130244)
@@ -446,3 +446,78 @@
         enable_actionicons = bool(enable_actionicons[0])
         portal._updateProperty('enable_actionicons', enable_actionicons)
         logger.info("'enable_actionicons' property fixed.")
+
+_ACTION_URLS = {
+    'criteria.html': 'criteria', # CMFTopic
+    'discussionitem_view': '',
+    'document_edit_form': 'edit',
+    'document_view': '',
+    'edit.html': 'edit',
+    'favorite_view': '',
+    'file_edit_form': 'edit',
+    'file_view': 'view',
+    'folder_edit_form': 'properties',
+    'folder_localrole_form': 'sharing',
+    'image_edit_form': 'edit',
+    'image_view': 'view',
+    'link_edit_form': 'edit',
+    'link_view': '',
+    'metadata_edit_form': 'properties',
+    'newsitem_edit_form': 'edit',
+    'newsitem_view': '',
+    'properties.html': 'properties',
+    'topic_criteria_form': 'criteria', # CMFTopic
+    'topic_edit_form': 'properties', # CMFTopic
+    'view.html': 'view'}
+
+def check_type_infos(tool):
+    """2.2.x to 2.3.0 upgrade step checker
+    """
+    ttool = getToolByName(tool, 'portal_types')
+    for ti in ttool.listTypeInfo():
+        immediate_view = ti.getProperty('immediate_view')
+        if immediate_view in  _ACTION_URLS:
+                return True
+
+        for ai in ti.listActions():
+            parts = ai.getActionExpression().rsplit('/')
+            if len(parts) < 2:
+                continue
+            old_name = parts[1]
+            if old_name in _ACTION_URLS:
+                return True
+    return False
+
+def upgrade_type_infos(tool):
+    """2.2.x to 2.3.0 upgrade step handler
+    """
+    logger = logging.getLogger('GenericSetup.upgrade')
+    ttool = getToolByName(tool, 'portal_types')
+    for ti in ttool.listTypeInfo():
+        changed = False
+        immediate_view = ti.getProperty('immediate_view')
+        if immediate_view in  _ACTION_URLS:
+            ti._setPropValue('immediate_view', _ACTION_URLS[immediate_view])
+
+        for ai in ti.listActions():
+            parts = ai.getActionExpression().rsplit('/')
+            if len(parts) < 2:
+                continue
+            old_name = parts[1]
+            if old_name in _ACTION_URLS:
+                new_name = _ACTION_URLS[old_name] or '(Default)'
+                if new_name == '(Default)':
+                    ai.setActionExpression(parts[0])
+                else:
+                    ai.setActionExpression('{0}/{1}'.format(parts[0],
+                                                            new_name))
+                aliases = ti.getMethodAliases()
+                old_value = aliases.pop(old_name, None)
+                if old_name.endswith('.html'):
+                    old_name = '@@{0}'.format(old_name)
+                aliases[new_name] = old_value or old_name
+                ti.setMethodAliases(aliases)
+                changed = True
+
+        if changed:
+            logger.info("TypeInfo '%s' changed." % ti.getId())

Added: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23views.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23views.py	                        (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23views.py	2013-05-17 07:02:19 UTC (rev 130244)
@@ -0,0 +1,101 @@
+##############################################################################
+#
+# Copyright (c) 2013 Zope Foundation and Contributors.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Upgrade steps to CMFDefault views_support 2.3.
+"""
+
+import logging
+
+from Products.CMFCore.utils import getToolByName
+
+
+_ACTION_URLS = {
+    'user/login': 'string:${portal_url}/@@login.html',
+    'user/join': 'string:${portal_url}/@@join.html',
+    'user/change_password': 'string:${portal_url}/@@password.html',
+    'user/preferences': 'string:${portal_url}/@@preferences.html',
+    'user/logout': 'string:${portal_url}/@@logout.html',
+    'user/logged_in': 'string:${portal_url}/@@logged_in.html',
+    'object/syndication': 'string:${folder_url}/@@syndicate.html',
+    'global/manage_members': 'string:${portal_url}/@@members.html',
+    'global/members_register': 'string:${portal_url}/@@join.html',
+    'global/search_form': 'string:${portal_url}/@@search_form.html',
+    'global/search': 'string:${portal_url}/@@search.html',
+    'global/configPortal': 'string:${portal_url}/@@configure.html'}
+
+def check_actions_tool(tool):
+    """2.2.x to 2.3.0 upgrade step checker
+    """
+    atool = getToolByName(tool, 'portal_actions')
+    for k, v in _ACTION_URLS.iteritems():
+        category_id, action_id = k.split('/')
+        try:
+            obj = atool[category_id][action_id]
+        except KeyError:
+            continue
+        prop = obj.getProperty('url_expr')
+        if prop != v:
+                return True
+    return False
+
+def upgrade_actions_tool(tool):
+    """2.2.x to 2.3.0 upgrade step handler
+    """
+    logger = logging.getLogger('GenericSetup.upgrade')
+    atool = getToolByName(tool, 'portal_actions')
+    for k, v in _ACTION_URLS.iteritems():
+        category_id, action_id = k.split('/')
+        try:
+            obj = atool[category_id][action_id]
+        except KeyError:
+            continue
+        prop = obj.getProperty('url_expr')
+        if prop != v:
+            obj._setPropValue('url_expr', v)
+            logger.info("Updated '{0}' action.".format(k))
+
+_ALIASES = {
+    'CMF BTree Folder': {'sharing': '@@sharing.html'},
+    'Discussion Item': {'(Default)': '@@view.html', 'view': '@@view.html'},
+    'Document': {'gethtml': '@@source.html'},
+    'File': {'view': '@@view.html'},
+    'Folder': {'sharing': '@@sharing.html'},
+    'Image': {'view': '@@view.html'},
+    'News Item': {'gethtml': '@@source.html'}}
+
+def check_type_aliases(tool):
+    """2.2.x to 2.3.0 upgrade step checker
+    """
+    ttool = getToolByName(tool, 'portal_types')
+    for ti_id, new_aliases in _ALIASES.iteritems():
+        ti = ttool[ti_id]
+        for k, v in new_aliases.iteritems():
+            if ti.queryMethodID(k) != v:
+                return True
+    return False
+
+def upgrade_type_aliases(tool):
+    """2.2.x to 2.3.0 upgrade step handler
+    """
+    ttool = getToolByName(tool, 'portal_types')
+    logger = logging.getLogger('GenericSetup.upgrade')
+    for ti_id, new_aliases in _ALIASES.iteritems():
+        changed = False
+        ti = ttool[ti_id]
+        for k, v in new_aliases.iteritems():
+            if ti.queryMethodID(k) != v:
+                aliases = ti.getMethodAliases()
+                aliases[k] = v
+                ti.setMethodAliases(aliases)
+                changed = True
+        if changed:
+            logger.info("Updated '{0}' type.".format(ti_id))


Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23views.py
___________________________________________________________________
Added: svn:eol-style
   + native



More information about the checkins mailing list