[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