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