[Checkins] SVN: Products.GenericSetup/trunk/Products/GenericSetup/ Enhance upgrade step logic: make it possible to import steps from other profiles as well. Tests will come later once the Zope 2.10-support is fixed

Wichert Akkerman wichert at wiggy.net
Thu Mar 5 06:21:10 EST 2009


Log message for revision 97523:
  Enhance upgrade step logic: make it possible to import steps from other profiles as well. Tests will come later once the Zope 2.10-support is fixed

Changed:
  U   Products.GenericSetup/trunk/Products/GenericSetup/CHANGES.txt
  U   Products.GenericSetup/trunk/Products/GenericSetup/upgrade.py
  U   Products.GenericSetup/trunk/Products/GenericSetup/zcml.py

-=-
Modified: Products.GenericSetup/trunk/Products/GenericSetup/CHANGES.txt
===================================================================
--- Products.GenericSetup/trunk/Products/GenericSetup/CHANGES.txt	2009-03-05 10:05:02 UTC (rev 97522)
+++ Products.GenericSetup/trunk/Products/GenericSetup/CHANGES.txt	2009-03-05 11:21:10 UTC (rev 97523)
@@ -42,7 +42,7 @@
   (https://bugs.launchpad.net/zope-cmf/+bug/259233)
 
 - Add <genericsetup:upgradeDepends> ZCML tag; defines a specialized upgrade
-  step that re-applies one or more import steps from the GS profile during
+  step that re-applies one or more import steps from a GS profile during
   an upgrade process
 
 - Add 'IChunkedExportContext' interface, allowing RAM-efficient chunked

Modified: Products.GenericSetup/trunk/Products/GenericSetup/upgrade.py
===================================================================
--- Products.GenericSetup/trunk/Products/GenericSetup/upgrade.py	2009-03-05 10:05:02 UTC (rev 97522)
+++ Products.GenericSetup/trunk/Products/GenericSetup/upgrade.py	2009-03-05 11:21:10 UTC (rev 97523)
@@ -145,16 +145,19 @@
     """A specialized upgrade step that re-runs a particular import
     step from the profile.
     """
-    def __init__(self, title, profile, source, dest, desc, import_steps=[],
-                 run_deps=False, purge=False, checker=None, sortkey=0):
+    def __init__(self, title, profile, source, dest, desc, import_profile=None,
+                 import_steps=[], run_deps=False, purge=False, checker=None,
+                 sortkey=0):
         super(UpgradeDepends, self).__init__(title, profile, source, dest,
                                           desc, checker, sortkey)
+        self.import_profile = import_profile
         self.import_steps = import_steps
         self.run_deps = run_deps
         self.purge = purge
 
     def doStep(self, tool):
-        profile_id = 'profile-%s' % self.profile
+        if self.import_profile is None:
+            profile_id = 'profile-%s' % self.profile
         if self.import_steps:
             for step in self.import_steps:
                 tool.runImportStepFromProfile(profile_id, step,

Modified: Products.GenericSetup/trunk/Products/GenericSetup/zcml.py
===================================================================
--- Products.GenericSetup/trunk/Products/GenericSetup/zcml.py	2009-03-05 10:05:02 UTC (rev 97522)
+++ Products.GenericSetup/trunk/Products/GenericSetup/zcml.py	2009-03-05 11:21:10 UTC (rev 97523)
@@ -263,6 +263,10 @@
         required=False,
         )
 
+    profile = zope.schema.TextLine(
+        title=u"GenericSetup profile id",
+        required=False)
+
     import_steps = zope.configuration.fields.Tokens(
         title=u"Import steps to rerun",
         required=False,
@@ -295,14 +299,15 @@
         args = (step,),
         )
 
-def upgradeDepends(_context, title, profile, description, import_steps=[],
-                   source='*', destination='*', run_deps=False, purge=False,
-                   checker=None, sortkey=0):
+def upgradeDepends(_context, title, profile, description, profile=None,
+                   import_steps=[], source='*', destination='*',
+                   run_deps=False, purge=False, checker=None, sortkey=0):
     step = UpgradeDepends(title, profile, source, destination, description,
-                          import_steps, run_deps, purge, checker, sortkey)
+                          profile, import_steps, run_deps, purge, checker,
+                          sortkey)
     _context.action(
-        discriminator = ('upgradeDepends', source, destination, str(import_steps),
-                         checker, sortkey),
+        discriminator = ('upgradeDepends', source, destination, profile,
+                         str(import_steps), checker, sortkey),
         callable = _registerUpgradeStep,
         args = (step,),
         )
@@ -334,17 +339,18 @@
             args = (step, self.id),
             )
 
-    def upgradeDepends(self, _context, title, description=None, import_steps=[],
-                       run_deps=False, purge=False, checker=None):
+    def upgradeDepends(self, _context, title, description=None, profile=None,
+                       import_steps=[], run_deps=False, purge=False,
+                       checker=None):
         """ nested upgradeDepends directive """
         step = UpgradeDepends(title, self.profile, self.source, self.dest,
-                              description, import_steps, run_deps, purge,
-                              checker, self.sortkey)
+                              description, profile, import_steps, run_deps,
+                              purge, checker, self.sortkey)
         if self.id is None:
             self.id = str(abs(hash('%s%s%s%s' % (title, self.source, self.dest,
                                                  self.sortkey))))
         _context.action(
-            discriminator = ('upgradeDepends', self.source, self.dest,
+            discriminator = ('upgradeDepends', self.source, self.dest, profile,
                              str(import_steps), self.sortkey),
             callable = _registerNestedUpgradeStep,
             args = (step, self.id)



More information about the Checkins mailing list