Author: jmorliaguet Date: Sat Nov 5 16:14:14 2005 New Revision: 29016 Modified: z3lab/cpsskins/branches/jmo-perspectives/configuration/formats/__init__.py z3lab/cpsskins/branches/jmo-perspectives/configuration/formats/metaconfigure.py z3lab/cpsskins/branches/jmo-perspectives/elements/format.py z3lab/cpsskins/branches/jmo-perspectives/elements/interfaces.py z3lab/cpsskins/branches/jmo-perspectives/elements/presentation.py z3lab/cpsskins/branches/jmo-perspectives/ontology.py Log:
- migrated formats to named utilities Modified: z3lab/cpsskins/branches/jmo-perspectives/configuration/formats/__init__.py ============================================================================== --- z3lab/cpsskins/branches/jmo-perspectives/configuration/formats/__init__.py (original) +++ z3lab/cpsskins/branches/jmo-perspectives/configuration/formats/__init__.py Sat Nov 5 16:14:14 2005 @@ -17,10 +17,3 @@ """ __docformat__ = "reStructuredText" -from zope.component import provideUtility - -from cpsskins.configuration import ConfigurationRegistry -from cpsskins.configuration.interfaces import IRegistry - -provideUtility(ConfigurationRegistry(), IRegistry, 'formats') - Modified: z3lab/cpsskins/branches/jmo-perspectives/configuration/formats/metaconfigure.py ============================================================================== --- z3lab/cpsskins/branches/jmo-perspectives/configuration/formats/metaconfigure.py (original) +++ z3lab/cpsskins/branches/jmo-perspectives/configuration/formats/metaconfigure.py Sat Nov 5 16:14:14 2005 @@ -24,13 +24,12 @@ from zope.app.content.interfaces import IContentType from zope.app.form.browser.metaconfigure import EditFormDirective from zope.configuration.exceptions import ConfigurationError -from zope.component import getUtility +from zope.component import queryUtility, provideUtility from zope.interface import alsoProvides from cpsskins.elements.interfaces import IFormat, IElementType -from cpsskins.configuration.interfaces import IRegistry - -format_registry = getUtility(IRegistry, 'formats') +from cpsskins.elements.format import Format +from cpsskins.ontology import FormatPredicate, IFormatPredicate def getAbsolutePath(_context, file): return os.path.abspath(str(_context.path(file))) @@ -48,7 +47,7 @@ if not (schema or factory or template): raise ConfigurationError("Format information is missing.") - if name in format_registry: + if queryUtility(IFormat, name) is not None: raise ConfigurationError, \ "A format with the name '%s' has already been registered." % name @@ -85,10 +84,10 @@ )() # register the format - format_registry.register(name, { - 'factory': factory, - 'predicate': predicate, - }) + provideUtility(Format(factory=factory, predicate=predicate), IFormat, name) + + # register the predicate + provideUtility(FormatPredicate(predicate), IFormatPredicate, name) # set up interface types alsoProvides(schema, IContentType) Modified: z3lab/cpsskins/branches/jmo-perspectives/elements/format.py ============================================================================== --- z3lab/cpsskins/branches/jmo-perspectives/elements/format.py (original) +++ z3lab/cpsskins/branches/jmo-perspectives/elements/format.py Sat Nov 5 16:14:14 2005 @@ -20,11 +20,10 @@ from zope.app.location.pickling import locationCopy from zope.app.traversing.interfaces import IPathAdapter, ITraversable from zope.app.traversing.interfaces import TraversalError -from zope.component import getUtility +from zope.component import getUtility, queryUtility from zope.interface import implements from zope.security.proxy import removeSecurityProxy -from cpsskins.configuration.interfaces import IRegistry from cpsskins.elements import Element from cpsskins.elements.interfaces import IType, IFormat, IFormattable from cpsskins.ontology import hasFormat @@ -33,14 +32,14 @@ from cpsskins.thememanager import getThemeManager from cpsskins.storage.interfaces import IFormatStorage -format_registry = getUtility(IRegistry, 'formats') - class Format(Element): implements(IFormat) - def __init__(self, id=''): + def __init__(self, id=u'', factory=None, predicate=None): self.id = id + self.factory = factory + self.predicate = predicate def _getFormatName(self): return IType(self).getContentType().getTaggedValue('name') @@ -98,7 +97,7 @@ def traverse(self, name, remaining): context = self.context # get a format by name - if name in format_registry: + if queryUtility(IFormat, name) is not None: return self.getFormat(name) # return a method of the adapter return getattr(self, name) @@ -115,11 +114,11 @@ formats = theme.getStorage(IFormatStorage) return formats.remove(format) - def getFormats(self, name=''): + def getFormats(self, name=u''): context = self.context reltool = RelationTool(context) - format_info = format_registry.get(name) - predicate = format_info and format_info['predicate'] or hasFormat + format = queryUtility(IFormat, name) + predicate = format and format.predicate or hasFormat return reltool.getSeconds(first=context, predicate=predicate) def getFormat(self, name=''): @@ -149,7 +148,7 @@ context = self.context reltool = RelationTool(context) - predicate = format_registry.get(format.formatname)['predicate'] + predicate = getUtility(IFormat, format.formatname).predicate relations = reltool.search(first=context, predicate=predicate) reltool.remove(relations) @@ -167,6 +166,6 @@ """Display factory. Return a display element. """ context = self.context - factory = format_registry.get(name)['factory'] + factory = getUtility(IFormat, name).factory return apply(factory, (), {'id': id}) Modified: z3lab/cpsskins/branches/jmo-perspectives/elements/interfaces.py ============================================================================== --- z3lab/cpsskins/branches/jmo-perspectives/elements/interfaces.py (original) +++ z3lab/cpsskins/branches/jmo-perspectives/elements/interfaces.py Sat Nov 5 16:14:14 2005 @@ -112,6 +112,10 @@ required=False, readonly=True) + predicate = Attribute(u"The format's predicate") + + factory = Attribute(u"The format's factory") + def findDisplays(): """ """ Modified: z3lab/cpsskins/branches/jmo-perspectives/elements/presentation.py ============================================================================== --- z3lab/cpsskins/branches/jmo-perspectives/elements/presentation.py (original) +++ z3lab/cpsskins/branches/jmo-perspectives/elements/presentation.py Sat Nov 5 16:14:14 2005 @@ -21,7 +21,6 @@ from zope.interface import implements from zope.component import getUtility, queryUtility -from cpsskins.configuration.interfaces import IRegistry from cpsskins.elements.interfaces import IType, IDisplayable, IFormattable from cpsskins.elements.interfaces import IPresentation from cpsskins.ontology import hasFormat, hasDisplay, hasDisplayFromPerspective @@ -29,7 +28,6 @@ from cpsskins.thememanager import getThemeManager from interfaces import IPresentable - class Presentation(object): implements(IPresentation) @@ -122,9 +120,8 @@ current_format = formattable.getFormat(name) format = formattable.cloneFormat(current_format) - format_registry = getUtility(IRegistry, 'formats') - predicate = format_registry.get(name)['predicate'] - relations = reltool.search(first=display, predicate=predicate) + format = getUtility(IFormat, name) + relations = reltool.search(first=display, predicate=format.predicate) reltool.remove(relations) formattable.setFormat(format) Modified: z3lab/cpsskins/branches/jmo-perspectives/ontology.py ============================================================================== --- z3lab/cpsskins/branches/jmo-perspectives/ontology.py (original) +++ z3lab/cpsskins/branches/jmo-perspectives/ontology.py Sat Nov 5 16:14:14 2005 @@ -17,12 +17,12 @@ """ __docformat__ = "reStructuredText" -from zope.component import getUtility -from configuration.interfaces import IRegistry - -# Ontology - theme and portlet engine +from zope.component import getUtility, getUtilitiesFor +from zope.interface import implements, Interface from cpsskins.relations import Predicate, CompoundPredicate, ProxyPredicate +from cpsskins.relations.interfaces import IPredicate +from cpsskins.elements.interfaces import IFormat # Monadic predicates @@ -31,21 +31,31 @@ # Dyadic predicates hasDisplay = Predicate('_ has display _') - hasPortlet = Predicate('_ has portlet _') # Triadic predicates hasPortletFromPerspective = Predicate('_ has portlet _ from perspective _') - hasDisplayFromPerspective = Predicate('_ has display _ from perspective _') - # Compound predicates +# Formats + +class IFormatPredicate(Interface): + """A predicate used by a format""" + +class FormatPredicate(object): + """A predicate used by a format + """ + implements(IFormatPredicate) + + def __init__(self, predicate): + self.predicate = predicate + def hasFormatProxy(): - format_registry = getUtility(IRegistry, 'formats') return CompoundPredicate( - tuple([f['predicate'] for f in format_registry.values()])) + tuple([v.predicate for k, v in getUtilitiesFor(IFormatPredicate)] + )) hasFormat = ProxyPredicate(hasFormatProxy) -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins