[Checkins] SVN: GenericSetup/trunk/registry.py Move common code for
ExportStepRegistry and ImportStepRegistry into a new
BaseStepRegistry class.
Wichert Akkerman
wichert at wiggy.net
Sat Sep 8 15:19:36 EDT 2007
Log message for revision 79531:
Move common code for ExportStepRegistry and ImportStepRegistry into a new BaseStepRegistry class.
Changed:
U GenericSetup/trunk/registry.py
-=-
Modified: GenericSetup/trunk/registry.py
===================================================================
--- GenericSetup/trunk/registry.py 2007-09-08 17:08:57 UTC (rev 79530)
+++ GenericSetup/trunk/registry.py 2007-09-08 19:19:36 UTC (rev 79531)
@@ -21,7 +21,6 @@
from AccessControl import ClassSecurityInfo
from Acquisition import Implicit
from Globals import InitializeClass
-from App.FactoryDispatcher import ProductDispatcher
import App.Product
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from zope.interface import implements
@@ -39,14 +38,8 @@
from utils import _extractDocstring
-class ImportStepRegistry( Implicit ):
+class BaseStepRegistry( Implicit ):
- """ Manage knowledge about steps to create / configure site.
-
- o Steps are composed together to define a site profile.
- """
- implements(IImportStepRegistry)
-
security = ClassSecurityInfo()
def __init__( self ):
@@ -56,45 +49,10 @@
security.declareProtected( ManagePortal, 'listSteps' )
def listSteps( self ):
- """ Return a sequence of IDs of registered steps.
-
- o Order is not significant.
+ """ Return a list of registered step IDs.
"""
return self._registered.keys()
- security.declareProtected( ManagePortal, 'sortSteps' )
- def sortSteps( self ):
-
- """ Return a sequence of registered step IDs
-
- o Sequence is sorted topologically by dependency, with the dependent
- steps *after* the steps they depend on.
- """
- return self._computeTopologicalSort()
-
- security.declareProtected( ManagePortal, 'checkComplete' )
- def checkComplete( self ):
-
- """ Return a sequence of ( node, edge ) tuples for unsatisifed deps.
- """
- result = []
- seen = {}
-
- graph = self._computeTopologicalSort()
-
- for node in graph:
-
- dependencies = self.getStepMetadata( node )[ 'dependencies' ]
-
- for dependency in dependencies:
-
- if seen.get( dependency ) is None:
- result.append( ( node, dependency ) )
-
- seen[ node ] = 1
-
- return result
-
security.declareProtected( ManagePortal, 'getStepMetadata' )
def getStepMetadata( self, key, default=None ):
@@ -139,7 +97,7 @@
security.declarePrivate( 'getStep' )
def getStep( self, key, default=None ):
- """ Return the IImportPlugin registered for 'key'.
+ """ Return the I(Export|Import)Plugin registered for 'key'.
o Return 'default' if no such step is registered.
"""
@@ -151,6 +109,57 @@
return _resolveDottedName( info[ 'handler' ] )
+ security.declarePrivate( 'clear' )
+ def clear( self ):
+
+ self._registered = {}
+
+InitializeClass( BaseStepRegistry )
+
+class ImportStepRegistry( BaseStepRegistry ):
+
+ """ Manage knowledge about steps to create / configure site.
+
+ o Steps are composed together to define a site profile.
+ """
+ implements(IImportStepRegistry)
+
+ security = ClassSecurityInfo()
+
+
+ security.declareProtected( ManagePortal, 'sortSteps' )
+ def sortSteps( self ):
+
+ """ Return a sequence of registered step IDs
+
+ o Sequence is sorted topologically by dependency, with the dependent
+ steps *after* the steps they depend on.
+ """
+ return self._computeTopologicalSort()
+
+ security.declareProtected( ManagePortal, 'checkComplete' )
+ def checkComplete( self ):
+
+ """ Return a sequence of ( node, edge ) tuples for unsatisifed deps.
+ """
+ result = []
+ seen = {}
+
+ graph = self._computeTopologicalSort()
+
+ for node in graph:
+
+ dependencies = self.getStepMetadata( node )[ 'dependencies' ]
+
+ for dependency in dependencies:
+
+ if seen.get( dependency ) is None:
+ result.append( ( node, dependency ) )
+
+ seen[ node ] = 1
+
+ return result
+
security.declarePrivate( 'registerStep' )
def registerStep( self
, id
@@ -235,11 +244,6 @@
return parser._parsed
- security.declarePrivate( 'clear' )
- def clear( self ):
-
- self._registered = {}
-
#
# Helper methods
#
@@ -290,7 +294,7 @@
InitializeClass( ImportStepRegistry )
-class ExportStepRegistry( Implicit ):
+class ExportStepRegistry( BaseStepRegistry ):
""" Registry of known site-configuration export steps.
@@ -312,71 +316,6 @@
security = ClassSecurityInfo()
- def __init__( self ):
-
- self.clear()
-
- security.declareProtected( ManagePortal, 'listSteps' )
- def listSteps( self ):
-
- """ Return a list of registered step IDs.
- """
- return self._registered.keys()
-
- security.declareProtected( ManagePortal, 'getStepMetadata' )
- def getStepMetadata( self, key, default=None ):
-
- """ Return a mapping of metadata for the step identified by 'key'.
-
- o Return 'default' if no such step is registered.
-
- o The 'handler' metadata is available via 'getStep'.
- """
- info = self._registered.get( key )
-
- if info is None:
- return default
-
- result = info.copy()
- result['invalid'] = _resolveDottedName( result[ 'handler' ] ) is None
-
- return result
-
- security.declareProtected( ManagePortal, 'listStepMetadata' )
- def listStepMetadata( self ):
-
- """ Return a sequence of mappings describing registered steps.
-
- o Steps will be alphabetical by ID.
- """
- step_ids = self.listSteps()
- step_ids.sort()
- return [ self.getStepMetadata( x ) for x in step_ids ]
-
- security.declareProtected( ManagePortal, 'generateXML' )
- def generateXML( self ):
-
- """ Return a round-trippable XML representation of the registry.
-
- o 'handler' values are serialized using their dotted names.
- """
- return self._exportTemplate()
-
- security.declarePrivate( 'getStep' )
- def getStep( self, key, default=None ):
-
- """ Return the IExportPlugin registered for 'key'.
-
- o Return 'default' if no such step is registered.
- """
- marker = object()
- info = self._registered.get( key, marker )
-
- if info is marker:
- return default
-
- return _resolveDottedName( info[ 'handler' ] )
-
security.declarePrivate( 'registerStep' )
def registerStep( self, id, handler, title=None, description=None ):
@@ -432,11 +371,6 @@
return parser._parsed
- security.declarePrivate( 'clear' )
- def clear( self ):
-
- self._registered = {}
-
#
# Helper methods
#
More information about the Checkins
mailing list