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

Reply via email to