[Checkins] SVN: GenericSetup/branches/tseaver-bbq_sprint/ * merge r73205:73296 from rafrombrc_cps_upgrade_integration branch

Rob Miller ra at burningman.com
Sat Mar 17 11:38:34 EDT 2007


Log message for revision 73297:
  * merge r73205:73296 from rafrombrc_cps_upgrade_integration branch
  

Changed:
  U   GenericSetup/branches/tseaver-bbq_sprint/meta.zcml
  U   GenericSetup/branches/tseaver-bbq_sprint/tool.py
  A   GenericSetup/branches/tseaver-bbq_sprint/upgrade.py
  A   GenericSetup/branches/tseaver-bbq_sprint/www/setup_upgrades.zpt
  U   GenericSetup/branches/tseaver-bbq_sprint/zcml.py

-=-
Modified: GenericSetup/branches/tseaver-bbq_sprint/meta.zcml
===================================================================
--- GenericSetup/branches/tseaver-bbq_sprint/meta.zcml	2007-03-17 15:28:46 UTC (rev 73296)
+++ GenericSetup/branches/tseaver-bbq_sprint/meta.zcml	2007-03-17 15:38:34 UTC (rev 73297)
@@ -2,11 +2,20 @@
     xmlns="http://namespaces.zope.org/zope"
     xmlns:meta="http://namespaces.zope.org/meta">
 
-  <meta:directive
-      name="registerProfile"
-      namespace="http://namespaces.zope.org/genericsetup"
-      schema=".zcml.IRegisterProfileDirective"
-      handler=".zcml.registerProfile"
-      />
+  <meta:directives namespace="http://namespaces.zope.org/genericsetup">
 
+    <meta:directive
+       name="registerProfile"
+       schema=".zcml.IRegisterProfileDirective"
+       handler=".zcml.registerProfile"
+       />
+
+    <meta:directive
+       name="upgradeStep"
+       schema=".zcml.IUpgradeStepDirective"
+       handler=".zcml.upgradeStep"
+       />
+
+  </meta:directives>
+
 </configure>

Modified: GenericSetup/branches/tseaver-bbq_sprint/tool.py
===================================================================
--- GenericSetup/branches/tseaver-bbq_sprint/tool.py	2007-03-17 15:28:46 UTC (rev 73296)
+++ GenericSetup/branches/tseaver-bbq_sprint/tool.py	2007-03-17 15:38:34 UTC (rev 73297)
@@ -28,6 +28,8 @@
 from zope.interface import implements
 from zope.interface import implementedBy
 
+from Products.CMFCore.utils import getToolByName
+
 from interfaces import BASE
 from interfaces import EXTENSION
 from interfaces import ISetupTool
@@ -44,6 +46,8 @@
 from registry import ToolsetRegistry
 from registry import _profile_registry
 
+from upgrade import listUpgradeSteps
+
 from utils import _resolveDottedName
 from utils import _wwwdir
 
@@ -164,7 +168,7 @@
 
         """ See ISetupTool.
         """
-        return 'ascii'
+        return 'utf-8'
 
     security.declareProtected(ManagePortal, 'getImportContextID')
     def getImportContextID(self):
@@ -394,6 +398,9 @@
                        {'label' : 'Export',
                         'action' : 'manage_exportSteps'
                        },
+                       {'label' : 'Upgrades',
+                        'action' : 'manage_upgrades'
+                        },
                        {'label' : 'Snapshots',
                         'action' : 'manage_snapshots'
                        },
@@ -533,6 +540,9 @@
                            'attachment; filename=%s' % result['filename'])
         return result['tarball']
 
+    security.declareProtected(ManagePortal, 'manage_upgrades')
+    manage_upgrades = PageTemplateFile('setup_upgrades', _wwwdir)
+
     security.declareProtected(ManagePortal, 'manage_snapshots')
     manage_snapshots = PageTemplateFile('sutSnapshots', _wwwdir)
 
@@ -566,6 +576,7 @@
     def listProfileInfo(self):
 
         """ Return a list of mappings describing registered profiles.
+        Base profile is listed first, extensions are sorted.
 
         o Keys include:
 
@@ -579,8 +590,17 @@
 
           'product' -- name of the registering product
         """
-        return _profile_registry.listProfileInfo()
+        base = []
+        ext = []
+        for info in _profile_registry.listProfileInfo():
+            if info.get('type', BASE) == BASE:
+                base.append(info)
+            else:
+                ext.append(info)
+        ext.sort(lambda x, y: cmp(x['id'], y['id']))
+        return base + ext
 
+
     security.declareProtected(ManagePortal, 'listContextInfos')
     def listContextInfos(self):
 
@@ -682,7 +702,34 @@
                                           ignore_blanks,
                                          )
 
+    #
+    # Upgrades management
+    #
+    security.declarePrivate('_getCurrentVersion')
+    def _getCurrentVersion(self):
+        # XXX this should return the current version of the
+        # appropriate profile.. need to define what this means
+        return None
 
+    security.declareProtected(ManagePortal, 'listUpgrades')
+    def listUpgrades(self, show_old=False):
+        """Get the list of available upgrades.
+        """
+        portal = getToolByName(self, 'portal_url').getPortalObject()
+        if show_old:
+            source = None
+        else:
+            source = self._getCurrentVersion()
+        upgrades = listUpgradeSteps(portal, source)
+        res = []
+        for info in upgrades:
+            info = info.copy()
+            info['haspath'] = info['source'] and info['dest']
+            info['ssource'] = '.'.join(info['source'] or ('all',))
+            info['sdest'] = '.'.join(info['dest'] or ('all',))
+            res.append(info)
+        return res
+
     #
     #   Helper methods
     #

Copied: GenericSetup/branches/tseaver-bbq_sprint/upgrade.py (from rev 73296, GenericSetup/branches/rafrombrc_cps_upgrade_integration/upgrade.py)

Copied: GenericSetup/branches/tseaver-bbq_sprint/www/setup_upgrades.zpt (from rev 73296, GenericSetup/branches/rafrombrc_cps_upgrade_integration/www/setup_upgrades.zpt)

Modified: GenericSetup/branches/tseaver-bbq_sprint/zcml.py
===================================================================
--- GenericSetup/branches/tseaver-bbq_sprint/zcml.py	2007-03-17 15:28:46 UTC (rev 73296)
+++ GenericSetup/branches/tseaver-bbq_sprint/zcml.py	2007-03-17 15:38:34 UTC (rev 73297)
@@ -25,6 +25,8 @@
 from registry import _profile_registry
 
 
+#### genericsetup:registerProfile
+
 class IRegisterProfileDirective(Interface):
 
     """Register profiles with the global registry.
@@ -81,6 +83,56 @@
         )
 
 
+#### genericsetup:upgradeStep
+
+import zope.schema
+from upgrade import UpgradeStep
+from upgrade import _registerUpgradeStep
+
+class IUpgradeStepDirective(Interface):
+    """Register an upgrade setup.
+    """
+    title = zope.schema.TextLine(
+        title=u"Title",
+        required=True)
+
+    source = zope.schema.ASCII(
+        title=u"Source version",
+        required=False)
+
+    destination = zope.schema.ASCII(
+        title=u"Destination version",
+        required=False)
+
+    sortkey = zope.schema.Int(
+        title=u"Sort key",
+        required=False)
+
+    profile = zope.schema.TextLine(
+        title=u"GenericSetup profile id",
+        required=True)
+
+    handler = GlobalObject(
+        title=u"Upgrade handler",
+        required=True)
+
+    checker = GlobalObject(
+        title=u"Upgrade checker",
+        required=False)
+
+def upgradeStep(_context, title, profile, handler, source='*', destination='*',
+                sortkey=0, checker=None):
+    step = UpgradeStep(title, profile, source, destination, handler, checker,
+                       sortkey)
+    _context.action(
+        discriminator = ('upgradeStep', source, destination, handler, sortkey),
+        callable = _registerUpgradeStep,
+        args = (step,),
+        )
+
+
+#### cleanup
+
 def cleanUp():
     global _profile_regs
     for profile_id in _profile_regs:



More information about the Checkins mailing list