Author: jmorliaguet
Date: Tue Oct 25 17:34:37 2005
New Revision: 28624

Modified:
   z3lab/cpsskins/branches/jmo-perspectives/browser/elements/slot.py
   z3lab/cpsskins/branches/jmo-perspectives/configure.zcml
   z3lab/cpsskins/branches/jmo-perspectives/elements/__init__.py
   z3lab/cpsskins/branches/jmo-perspectives/elements/configure.zcml
   z3lab/cpsskins/branches/jmo-perspectives/elements/interfaces.py
   z3lab/cpsskins/branches/jmo-perspectives/elements/slot.py
   z3lab/cpsskins/branches/jmo-perspectives/elements/theme.py
   z3lab/cpsskins/branches/jmo-perspectives/relations/__init__.py
   z3lab/cpsskins/branches/jmo-perspectives/relations/interfaces.py
   z3lab/cpsskins/branches/jmo-perspectives/storage/relations.py
Log:

- saving work. moved Portlet.__str__() to an IRelatable adapter



Modified: z3lab/cpsskins/branches/jmo-perspectives/browser/elements/slot.py
==============================================================================
--- z3lab/cpsskins/branches/jmo-perspectives/browser/elements/slot.py   
(original)
+++ z3lab/cpsskins/branches/jmo-perspectives/browser/elements/slot.py   Tue Oct 
25 17:34:37 2005
@@ -18,6 +18,7 @@
 __docformat__ = "reStructuredText"
 
 from zope.app import zapi
+from zope.component import getMultiAdapter
 from zope.app.container.browser.adding import Adding
 from zope.app.publisher.browser import BrowserView
 from zope.app.traversing.api import getParent

Modified: z3lab/cpsskins/branches/jmo-perspectives/configure.zcml
==============================================================================
--- z3lab/cpsskins/branches/jmo-perspectives/configure.zcml     (original)
+++ z3lab/cpsskins/branches/jmo-perspectives/configure.zcml     Tue Oct 25 
17:34:37 2005
@@ -6,14 +6,6 @@
 
   <i18n:registerTranslations directory="locales" />
 
-
-  <adapter
-      factory=".relations.Relatable"
-      provides=".relations.interfaces.IRelatable"
-      permission="zope.Public"
-      for=".elements.interfaces.IElement" />
-
-
   <!-- Theme management utility -->
 
   <localUtility class=".thememanager.ThemeManagement">

Modified: z3lab/cpsskins/branches/jmo-perspectives/elements/__init__.py
==============================================================================
--- z3lab/cpsskins/branches/jmo-perspectives/elements/__init__.py       
(original)
+++ z3lab/cpsskins/branches/jmo-perspectives/elements/__init__.py       Tue Oct 
25 17:34:37 2005
@@ -31,6 +31,7 @@
 
 from interfaces import IElement, IElementType, IType
 from interfaces import INode, IInnerNode, ILeaf, INodeTraverser
+from cpsskins.relations.interfaces import IRelatable
 
 class Element(Contained):
     """An element
@@ -39,11 +40,19 @@
 
     identifier = None
 
+class Relatable(object):
+    """This adapter makes elements relatable.
+    """
+    adapts(IElement)
+    implements(IRelatable)
+
+    def __init__(self, element):
+        self.element = element
+
     def __str__(self):
-        id = getattr(self, 'identifier', '')
+        id = getattr(self.element, 'identifier', '')
         return str(id)
 
-
 class Node(Element):
     """A Node is an element in a tree structure.
     """

Modified: z3lab/cpsskins/branches/jmo-perspectives/elements/configure.zcml
==============================================================================
--- z3lab/cpsskins/branches/jmo-perspectives/elements/configure.zcml    
(original)
+++ z3lab/cpsskins/branches/jmo-perspectives/elements/configure.zcml    Tue Oct 
25 17:34:37 2005
@@ -13,7 +13,21 @@
       provides="zope.app.container.interfaces.INameChooser"
   />
 
-  <!-- this adapter make it possible to get the types of an element -->
+  <!-- this adapter makes elements relatable -->
+
+  <adapter
+      for=".interfaces.IElement"
+      factory=".Relatable"
+      provides="cpsskins.relations.interfaces.IRelatable"
+  />
+
+  <adapter
+      for=".interfaces.ISlot"
+      factory=".slot.Relatable"
+      provides="cpsskins.relations.interfaces.IRelatable"
+  />
+
+  <!-- this adapter makes it possible to get the types of an element -->
 
   <adapter
       for=".interfaces.IElement"
@@ -37,12 +51,12 @@
 
   <adapter
       for=".interfaces.ITheme"
-      factory=".theme.ThemeTraverser"
+      factory=".theme.NodeTraverser"
   />
 
   <adapter
       for=".interfaces.ISlot"
-      factory=".slot.SlotTraverser"
+      factory=".slot.NodeTraverser"
   />
 
   <!-- this adapter makes elements presentable -->

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     Tue Oct 
25 17:34:37 2005
@@ -33,9 +33,6 @@
 
     identifier = Attribute("Identifier")
 
-    def __str__():
-        """The string representation is used as an identifier in a relation."""
-
 class IType(Interface):
 
     def getContentType():
@@ -198,6 +195,9 @@
             "inside a theme. Slot names must be unique on a same page."),
         required=True)
 
+    def __str__():
+        """Returns the slot's name."""
+
 class ICell(ICanvas):
     """A cell.
     """

Modified: z3lab/cpsskins/branches/jmo-perspectives/elements/slot.py
==============================================================================
--- z3lab/cpsskins/branches/jmo-perspectives/elements/slot.py   (original)
+++ z3lab/cpsskins/branches/jmo-perspectives/elements/slot.py   Tue Oct 25 
17:34:37 2005
@@ -26,6 +26,7 @@
     )
 from cpsskins.ontology import hasPortlet, hasPortletFromPerspective
 from cpsskins.relations.tool import RelationTool
+from cpsskins.relations.interfaces import IRelatable
 from cpsskins.storage.interfaces import IPortletStorage
 from cpsskins.thememanager import getThemeManager
 
@@ -48,8 +49,6 @@
         self._slot = _slot
 
     def __str__(self):
-        """The slot's name is used as an identifier. It needs not be unique.
-        """
         return self._slot
 
     def __repr__(self):
@@ -80,8 +79,22 @@
         theme = tmutil.getThemeInContext(self)
         return k in theme.getStorage(IPortletStorage)
 
-class SlotTraverser(object):
-    """This adapter makes slots traversable (as nodes).
+class Relatable(object):
+    """This adapter makes slots relatable.
+    """
+    adapts(ISlot)
+    implements(IRelatable)
+
+    def __init__(self, element):
+        self.element = element
+
+    def __str__(self):
+        """The slot's name is used as an identifier. It needs not be unique.
+        """
+        return self.element._slot
+
+class NodeTraverser(object):
+    """This adapter makes slot nodes traversable.
     """
     adapts(INode)
     implements(INodeTraverser)

Modified: z3lab/cpsskins/branches/jmo-perspectives/elements/theme.py
==============================================================================
--- z3lab/cpsskins/branches/jmo-perspectives/elements/theme.py  (original)
+++ z3lab/cpsskins/branches/jmo-perspectives/elements/theme.py  Tue Oct 25 
17:34:37 2005
@@ -104,8 +104,8 @@
         return [str(p) for p in perspectives.values()] \
              + [p[0] for p in list(getUtilitiesFor(IPerspective))]
 
-class ThemeTraverser(object):
-    """This adapter makes themes traversable.
+class NodeTraverser(object):
+    """This adapter makes theme nodes traversable.
     """
     adapts(INode)
     implements(INodeTraverser)

Modified: z3lab/cpsskins/branches/jmo-perspectives/relations/__init__.py
==============================================================================
--- z3lab/cpsskins/branches/jmo-perspectives/relations/__init__.py      
(original)
+++ z3lab/cpsskins/branches/jmo-perspectives/relations/__init__.py      Tue Oct 
25 17:34:37 2005
@@ -26,11 +26,6 @@
 from interfaces import IRelatable, IPredicate, ICompoundPredicate
 from interfaces import IMonadicRelation, IDyadicRelation, ITriadicRelation
 
-class Relatable:
-    """A relate is a thing that can be in a relation
-    """
-    implements(IRelatable)
-
 class Predicate:
     """A predicate is a group of marks.
 

Modified: z3lab/cpsskins/branches/jmo-perspectives/relations/interfaces.py
==============================================================================
--- z3lab/cpsskins/branches/jmo-perspectives/relations/interfaces.py    
(original)
+++ z3lab/cpsskins/branches/jmo-perspectives/relations/interfaces.py    Tue Oct 
25 17:34:37 2005
@@ -23,6 +23,9 @@
 class IRelatable(Interface):
     """A relatable element can be connected to other relatable elements."""
 
+    def __str__():
+        """The string representation is used as an identifier in a relation."""
+
 class IPredicate(Interface):
     """A predicate tells something about related elements."""
 

Modified: z3lab/cpsskins/branches/jmo-perspectives/storage/relations.py
==============================================================================
--- z3lab/cpsskins/branches/jmo-perspectives/storage/relations.py       
(original)
+++ z3lab/cpsskins/branches/jmo-perspectives/storage/relations.py       Tue Oct 
25 17:34:37 2005
@@ -30,7 +30,7 @@
 from zope.security.proxy import removeSecurityProxy
 
 from cpsskins.relations import Predicate, CompoundPredicate
-from cpsskins.relations.interfaces import IRelation
+from cpsskins.relations.interfaces import IRelation, IRelatable
 from cpsskins.storage import Storage
 from interfaces import IRelationStorage
 
@@ -292,7 +292,7 @@
         def f(v, w):
             if w == '*':
                 return '*'
-            return str(v)
+            return str(IRelatable(v))
 
         for w in WILDCARDS[arity]:
             relations.append(
@@ -302,12 +302,12 @@
 
     def _computeKey(self, relates):
         """Build a key for doing index lookups.
-        e.g. (a, b, None) will be converted into (a, b, *)
+        e.g. ('a', 'b', None) will be converted into ('a', 'b', '*')
         """
         def f(v):
             if v is None:
                 return '*'
-            return str(v)
+            return str(IRelatable(v, v))
         return ','.join([f(r) for r in relates])
 
     def _lookup(self, relates):
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to