[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