[Checkins] SVN: GenericSetup/branches/wichert-zcml-steps/ Add zcml export step registration

Wichert Akkerman wichert at wiggy.net
Sun Oct 28 06:06:50 EDT 2007


Log message for revision 81168:
  Add zcml export step registration

Changed:
  U   GenericSetup/branches/wichert-zcml-steps/CHANGES.txt
  U   GenericSetup/branches/wichert-zcml-steps/meta.zcml
  U   GenericSetup/branches/wichert-zcml-steps/tests/test_zcml.py
  U   GenericSetup/branches/wichert-zcml-steps/zcml.py

-=-
Modified: GenericSetup/branches/wichert-zcml-steps/CHANGES.txt
===================================================================
--- GenericSetup/branches/wichert-zcml-steps/CHANGES.txt	2007-10-28 09:40:32 UTC (rev 81167)
+++ GenericSetup/branches/wichert-zcml-steps/CHANGES.txt	2007-10-28 10:06:50 UTC (rev 81168)
@@ -1,6 +1,10 @@
 GenericSetup Product Changelog
 
+  GenericSetup 1.4 (unreleased)
+  
+    - Use zcml to register import and export steps.
 
+
   GenericSetup 1.3.2 (unreleased)
 
     - Ignore import and export step handlers that we can not resolve.

Modified: GenericSetup/branches/wichert-zcml-steps/meta.zcml
===================================================================
--- GenericSetup/branches/wichert-zcml-steps/meta.zcml	2007-10-28 09:40:32 UTC (rev 81167)
+++ GenericSetup/branches/wichert-zcml-steps/meta.zcml	2007-10-28 10:06:50 UTC (rev 81168)
@@ -10,6 +10,11 @@
         handler=".zcml.registerProfile"
         />
 
+    <meta:directive
+        name="exportStep"
+        schema=".zcml.IExportStepDirective"
+        handler=".zcml.exportStep"
+        />
     <meta:complexDirective
         name="importStep"
         schema=".zcml.IImportStepDirective"

Modified: GenericSetup/branches/wichert-zcml-steps/tests/test_zcml.py
===================================================================
--- GenericSetup/branches/wichert-zcml-steps/tests/test_zcml.py	2007-10-28 09:40:32 UTC (rev 81167)
+++ GenericSetup/branches/wichert-zcml-steps/tests/test_zcml.py	2007-10-28 10:06:50 UTC (rev 81168)
@@ -22,12 +22,17 @@
 
 from Products.GenericSetup.testing import ExportImportZCMLLayer
 from Products.GenericSetup.zcml import cleanUpImportSteps
+from Products.GenericSetup.zcml import cleanUpExportSteps
 from Products.GenericSetup.registry import _import_step_registry
+from Products.GenericSetup.registry import _export_step_registry
 from Products.Five import zcml
 
 def dummy_importstep_handler(context):
     pass
 
+def dummy_exportstep_handler(context):
+    pass
+
 def dummy_upgrade_handler(context):
     pass
 
@@ -290,10 +295,40 @@
 
 
 
+class ExportStepTests(unittest.TestCase):
+    layer = ExportImportZCMLLayer
+
+    def tearDown(self):
+        cleanUpExportSteps()
+
+    def testRegistration(self):
+        zcml.load_string("""<configure
+                              xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
+                              i18n_domain="genericsetup">
+                             <genericsetup:exportStep
+                                 name="name"
+                                 title="title"
+                                 description="description"
+                                 handler="Products.GenericSetup.tests.test_zcml.dummy_exportstep_handler"
+                                 />
+                              </configure>
+                              """)
+        from Products.GenericSetup.zcml import _export_step_regs
+        self.assertEqual(_export_step_regs, [u'name'])
+        self.assertEqual( _export_step_registry.listSteps(), [u'name'])
+        data=_export_step_registry.getStepMetadata(u'name')
+        self.assertEqual(data["handler"],
+                'Products.GenericSetup.tests.test_zcml.dummy_exportstep_handler')
+        self.assertEqual(data["description"], u"description")
+        self.assertEqual(data["title"], u"title")
+        self.assertEqual(data["id"], u"name")
+
+
 def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(doctest.DocTestSuite(optionflags=ELLIPSIS))
     suite.addTest(unittest.makeSuite(ImportStepTests))
+    suite.addTest(unittest.makeSuite(ExportStepTests))
     return suite
 
     return suite

Modified: GenericSetup/branches/wichert-zcml-steps/zcml.py
===================================================================
--- GenericSetup/branches/wichert-zcml-steps/zcml.py	2007-10-28 09:40:32 UTC (rev 81167)
+++ GenericSetup/branches/wichert-zcml-steps/zcml.py	2007-10-28 10:06:50 UTC (rev 81168)
@@ -85,6 +85,41 @@
         )
 
 
+#### genericsetup:exportStep
+
+class IExportStepDirective(Interface):
+    name = PythonIdentifier(
+        title=u'Name',
+        description=u'',
+        required=True)
+
+    title = MessageID(
+        title=u'Title',
+        description=u'',
+        required=True)
+
+    description = MessageID(
+        title=u'Description',
+        description=u'',
+        required=True)
+
+    handler = GlobalObject(
+        title=u'Handler',
+        description=u'',
+        required=True)
+
+
+_export_step_regs = []
+
+def exportStep(context, name, handler, title=None, description=None):
+    global _export_step_regs
+    _export_step_regs.append(name)
+
+    context.action(
+        discriminator = ('exportStep', name),
+        callable = _export_step_registry.registerStep,
+        args = (name, handler, title, description),
+        )
 #### genericsetup:importStep
 
 class IImportStepDirective(Interface):
@@ -267,7 +302,18 @@
 
     _import_step_regs=[]
 
+def cleanUpExportSteps():
+    global _export_step_regs
+    for name in  _export_step_regs:
+        try:
+             _export_step_registry.unregisterStep( name )
+        except KeyError:
+            pass
+
+    _export_step_regs=[]
+
 from zope.testing.cleanup import addCleanUp
 addCleanUp(cleanUpProfiles)
 addCleanUp(cleanUpImportSteps)
+addCleanUp(cleanUpExportSteps)
 del addCleanUp



More information about the Checkins mailing list