[Checkins] SVN: Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/ store global steps as ustilities in component registry
Godefroid Chapelle
gotcha at bubblenet.be
Thu Mar 3 09:26:59 EST 2011
Log message for revision 120738:
store global steps as ustilities in component registry
Changed:
U Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/interfaces.py
U Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/registry.py
U Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/tests/test_stepzcml.py
U Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/tests/test_zcml.py
U Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/zcml.py
-=-
Modified: Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/interfaces.py
===================================================================
--- Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/interfaces.py 2011-03-03 14:25:53 UTC (rev 120737)
+++ Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/interfaces.py 2011-03-03 14:26:58 UTC (rev 120738)
@@ -11,8 +11,6 @@
#
##############################################################################
""" GenericSetup product interfaces
-
-$Id$
"""
from zope.interface import Attribute
@@ -851,3 +849,11 @@
class IProfile(Interface):
""" Named profile.
"""
+
+class IImportStep(Interface):
+ """ Named import step.
+ """
+
+class IExportStep(Interface):
+ """ Named export step.
+ """
Modified: Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/registry.py
===================================================================
--- Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/registry.py 2011-03-03 14:25:53 UTC (rev 120737)
+++ Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/registry.py 2011-03-03 14:26:58 UTC (rev 120738)
@@ -31,6 +31,8 @@
from Products.GenericSetup.interfaces import IToolsetRegistry
from Products.GenericSetup.interfaces import IProfileRegistry
from Products.GenericSetup.interfaces import IProfile
+from Products.GenericSetup.interfaces import IImportStep
+from Products.GenericSetup.interfaces import IExportStep
from Products.GenericSetup.permissions import ManagePortal
from Products.GenericSetup.metadata import ProfileMetadata
from Products.GenericSetup.utils import _xmldir
@@ -227,12 +229,41 @@
InitializeClass( _ExportStepRegistryParser )
+class GlobalRegistryStorage(object):
+
+ def __init__(self, interfaceClass):
+ self.interfaceClass = interfaceClass
+ self.sm = getGlobalSiteManager()
+
+ def keys(self):
+ keys = [name for name, info in self.sm.getUtilitiesFor(self.interfaceClass)]
+ return keys
+
+ def values(self):
+ values = [info for name, info in self.sm.getUtilitiesFor(self.interfaceClass)]
+ return values
+
+ def get(self, key):
+ return self.sm.queryUtility(provided=self.interfaceClass, name=key)
+
+ def __setitem__(self, id, info):
+ return self.sm.registerUtility(info, provided=self.interfaceClass, name=id)
+
+ def __delitem__(self, id):
+ return self.sm.unregisterUtility(provided=self.interfaceClass, name=id)
+
+ def clear(self):
+ for key in self.keys():
+ self.unregister(key)
+
class BaseStepRegistry( Implicit ):
security = ClassSecurityInfo()
- def __init__( self ):
-
+ def __init__( self, store=None ):
+ if store is None:
+ store = {}
+ self._registered = store
self.clear()
security.declareProtected( ManagePortal, 'listSteps' )
@@ -288,22 +319,21 @@
o Return 'default' if no such step is registered.
"""
- marker = object()
- info = self._registered.get( key, marker )
+ info = self._registered.get( key )
- if info is marker:
+ if info is None:
return default
return _resolveDottedName( info[ 'handler' ] )
security.declarePrivate( 'unregisterStep' )
def unregisterStep( self, id ):
- del self._registered[id]
+ del self._registered[ id ]
security.declarePrivate( 'clear' )
def clear( self ):
- self._registered = {}
+ self._registered.clear()
security.declarePrivate( 'parseXML' )
def parseXML( self, text, encoding=None ):
@@ -452,7 +482,7 @@
InitializeClass( ImportStepRegistry )
-_import_step_registry = ImportStepRegistry()
+_import_step_registry = ImportStepRegistry(GlobalRegistryStorage(IImportStep))
class ExportStepRegistry( BaseStepRegistry ):
@@ -526,7 +556,7 @@
InitializeClass( ExportStepRegistry )
-_export_step_registry = ExportStepRegistry()
+_export_step_registry = ExportStepRegistry(GlobalRegistryStorage(IExportStep))
class ToolsetRegistry( Implicit ):
@@ -743,7 +773,7 @@
security.declarePrivate( 'clear' )
def clear( self ):
sm = getGlobalSiteManager()
- profile_ids = [profile_id for profile_id, profile_info
+ profile_ids = [profile_id for profile_id, profile_info
in sm.getUtilitiesFor(IProfile)]
for profile_id in profile_ids:
sm.unregisterUtility(provided=IProfile, name=profile_id)
Modified: Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/tests/test_stepzcml.py
===================================================================
--- Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/tests/test_stepzcml.py 2011-03-03 14:25:53 UTC (rev 120737)
+++ Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/tests/test_stepzcml.py 2011-03-03 14:26:58 UTC (rev 120738)
@@ -48,13 +48,14 @@
def testEmptyImport(self):
zcml.load_string(EMPTY_ZCML)
- self.assertEqual(_import_step_registry._registered, {})
+ self.assertEqual(len(_import_step_registry.listSteps()), 0)
def testOneStepImport(self):
zcml.load_string(ONE_STEP_ZCML)
- self.assertEqual(_import_step_registry._registered.keys(),
+ self.assertEqual(_import_step_registry.listSteps(),
[ u'Products.GenericSetup.teststep' ])
- info = _import_step_registry._registered[ u'Products.GenericSetup.teststep' ]
+ info = _import_step_registry.getStepMetadata(
+ u'Products.GenericSetup.teststep')
self.assertEqual( info['description'],
u'step description' )
self.assertEqual( info['title'],
Modified: Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/tests/test_zcml.py
===================================================================
--- Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/tests/test_zcml.py 2011-03-03 14:25:53 UTC (rev 120737)
+++ Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/tests/test_zcml.py 2011-03-03 14:26:58 UTC (rev 120738)
@@ -362,8 +362,6 @@
handler="Products.GenericSetup.tests.test_zcml.dummy_importstep_handler">
</genericsetup:importStep>
</configure>""")
- from Products.GenericSetup.zcml import _import_step_regs
- self.assertEqual(_import_step_regs, [u'name'])
self.assertEqual( _import_step_registry.listSteps(), [u'name'])
data=_import_step_registry.getStepMetadata(u'name')
self.assertEqual(data["handler"],
@@ -412,8 +410,6 @@
/>
</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"],
Modified: Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/zcml.py
===================================================================
--- Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/zcml.py 2011-03-03 14:25:53 UTC (rev 120737)
+++ Products.GenericSetup/branches/gotcha-registries-use-utilities/Products/GenericSetup/zcml.py 2011-03-03 14:26:58 UTC (rev 120738)
@@ -113,11 +113,8 @@
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),
@@ -162,8 +159,6 @@
required=True)
-_import_step_regs = []
-
class importStep:
def __init__(self, context, name, title, description, handler):
@@ -181,8 +176,6 @@
self.dependencies += (name,)
def __call__(self):
- global _import_step_regs
- _import_step_regs.append(self.name)
self.context.action(
discriminator=self.discriminator,
@@ -382,25 +375,11 @@
def cleanUpImportSteps():
- global _import_step_regs
- for name in _import_step_regs:
- try:
- _import_step_registry.unregisterStep(name)
- except KeyError:
- pass
+ pass
- _import_step_regs = []
-
def cleanUpExportSteps():
- global _export_step_regs
- for name in _export_step_regs:
- try:
- _export_step_registry.unregisterStep(name)
- except KeyError:
- pass
+ pass
- _export_step_regs = []
-
from zope.testing.cleanup import addCleanUp
addCleanUp(cleanUpProfiles)
addCleanUp(cleanUpImportSteps)
More information about the checkins
mailing list