Author: jmorliaguet
Date: Tue Jun  6 11:24:25 2006
New Revision: 3332

Removed:
   cpsskins/branches/paris-sprint-2006/relations/tool.py
Modified:
   cpsskins/branches/paris-sprint-2006/browser/tree/slot.py
   cpsskins/branches/paris-sprint-2006/elements/display.py
   cpsskins/branches/paris-sprint-2006/elements/format.py
   cpsskins/branches/paris-sprint-2006/elements/portlet.py
   cpsskins/branches/paris-sprint-2006/elements/presentation.py
   cpsskins/branches/paris-sprint-2006/relations/configure.zcml
   cpsskins/branches/paris-sprint-2006/tests/setup.py
   cpsskins/branches/paris-sprint-2006/tests/test_relations.py
   cpsskins/branches/paris-sprint-2006/thememanager.py
   cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/views.py
   cpsskins/branches/paris-sprint-2006/utils.py

Log:

- removed the IRelationTool. Actually by 'relation tool' we mean 'relation
  storage', so instead of writing:

  >>> reltool = IRelationTool(context)
  >>> reltool.search(...)

  we have:

  >>> from cpsskins.utils import getRelationStorage
  >>> relations = getRelationStorage(context)
  >>> relations.search(...)

  the orginal idea was to make it possible to plug in other relation tools
  than the default one. This is still possible but this will not be done
  at run timei through an adapter lookup, but during configuration time with:

  <cpsskins:storage
      id="relations"
      title="Relation storage"
      description="A relation storage contains relations between objects"
      class="my.relationengine.RelationStorage" <<<
      interface="cpsskins.relations.IRelationStorage"
      contains="cpsskins.relations.interfaces.IRelation"
  />

  the storage is physically stored in the theme management folder.



Modified: cpsskins/branches/paris-sprint-2006/browser/tree/slot.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/browser/tree/slot.py    (original)
+++ cpsskins/branches/paris-sprint-2006/browser/tree/slot.py    Tue Jun  6 
11:24:25 2006
@@ -30,8 +30,7 @@
 from cpsskins.elements.interfaces import IPortlet, IDisplayable
 from cpsskins.ontology import hasPortlet, hasPortletFromPerspective
 from cpsskins.relations import DyadicRelation, TriadicRelation
-from cpsskins.relations.interfaces import IRelationTool
-from cpsskins.utils import getThemeManager
+from cpsskins.utils import getThemeManager, getRelationStorage
 
 class NodeTraversing(BrowserView):
     """This adapter makes slot nodes traversable.
@@ -43,12 +42,12 @@
            Override this method if the element is a virtual container.
         """
         context = self.context
-        reltool = IRelationTool(context)
+        relations = getRelationStorage(context)
 
         if perspective is None or display.mode == IGNORE_PERSPECTIVES:
-            portlets = reltool.getSeconds(predicate=hasPortlet, first=context)
+            portlets = relations.getSeconds(predicate=hasPortlet, 
first=context)
         elif display.mode == USE_CURRENT_PERSPECTIVE:
-            portlets = reltool.getSeconds(predicate=hasPortletFromPerspective,
+            portlets = 
relations.getSeconds(predicate=hasPortletFromPerspective,
                                           first=context, third=perspective)
 
         # the portlet order is obtained from the display, if the display is
@@ -124,45 +123,30 @@
         # the element is not physically moved but slot -> portlet relations
         # need to be updated.
 
-        reltool = IRelationTool(content)
+        relations = getRelationStorage(content)
 
         # TODO: let compound predicates support predicates of different arities
-        old_relations = reltool.search(
-            predicate=hasPortlet,
-            first=src_container,
-            second=content,
-            ) + reltool.search(
-            predicate=hasPortletFromPerspective,
-            first=src_container,
-            second=content,
-            )
+        old_relations = relations.search(predicate=hasPortlet,
+                                         first=src_container, second=content) \
+                      + relations.search(predicate=hasPortletFromPerspective,
+                                         first=src_container, second=content)
 
-        rel = reltool.get(old_relations[0])
+        rel = relations.get(old_relations[0])
         perspective = len(rel) == 3 and rel.third or None
 
         # set the dest_slot -> portlet relation
         if perspective is None:
-            relation = DyadicRelation(
-                predicate=hasPortlet,
-                first=dest_container,
-                second=content,
-                )
+            relation = DyadicRelation(predicate=hasPortlet,
+                                      first=dest_container, second=content)
         else:
-            relation = TriadicRelation(
-                predicate=hasPortletFromPerspective,
-                first=dest_container,
-                second=content,
-                third=perspective,
-                )
-
-        relations = getThemeManager(dest_container).getRelationStorage()
+            relation = TriadicRelation(predicate=hasPortletFromPerspective,
+                                       first=dest_container, second=content,
+                                       third=perspective)
         relations.add(relation)
-
         # remove old src_slot -> portlet relations
-        reltool.remove(old_relations)
+        relations.remove(old_relations)
         # set the portlet's parent explicitly
         content.__parent__ = dest_container
-
         return content
 
 class SlotRemoving(BrowserView):
@@ -186,22 +170,16 @@
 
         portlets = getThemeManager(container).getPortletStorage()
 
-        reltool = IRelationTool(container)
+        relations = getRelationStorage(container)
         if perspective is None:
-            ids = reltool.search(
-                predicate=hasPortlet,
-                first=container,
-                second=content,
-                )
+            ids = relations.search(predicate=hasPortlet, first=container,
+                                   second=content)
         else:
-            ids = reltool.search(
-                predicate=hasPortletFromPerspective,
-                first=container,
-                second=content,
-                third=perspective,
-                )
+            ids = relations.search(predicate=hasPortletFromPerspective,
+                                   first=container, second=content,
+                                   third=perspective)
 
-        reltool.remove(ids)
+        relations.remove(ids)
         del portlets[getName(content)]
 
         # store the portlet's order in the slot's "BoxGroup" display
@@ -263,23 +241,16 @@
             raise TypeError("Only portlets can be duplicated inside slots")
 
         portlets = getThemeManager(container).getPortletStorage()
-
         duplicated = portlets.duplicate(content)
-
-        reltool = IRelationTool(content)
+        relations = getRelationStorage(content)
 
         # Manage relations
-        relations = reltool.search(
-            predicate=hasPortlet,
-            first=container,
-            second=content,
-            ) + reltool.search(
-            predicate=hasPortletFromPerspective,
-            first=container,
-            second=content,
-            )
+        old_relations = relations.search(predicate=hasPortlet, first=container,
+                                         second=content) \
+                      + relations.search(predicate=hasPortletFromPerspective,
+                                         first=container, second=content)
 
-        rel = reltool.get(relations[0])
+        rel = relations.get(old_relations[0])
         perspective = len(rel) == 3 and rel.third or None
 
         display = IDisplayable(container).getEffectiveDisplay(perspective)
@@ -287,22 +258,13 @@
 
         # set the dest_slot -> portlet relation
         if perspective is None:
-            relation = DyadicRelation(
-                predicate=hasPortlet,
-                first=container,
-                second=duplicated,
-                )
+            relation = DyadicRelation(predicate=hasPortlet, first=container,
+                                      second=duplicated)
         else:
-            relation = TriadicRelation(
-                predicate=hasPortletFromPerspective,
-                first=container,
-                second=duplicated,
-                third=perspective,
-                )
-
-        reltool.add(relation)
-
+            relation = TriadicRelation(predicate=hasPortletFromPerspective,
+                                       first=container, second=duplicated,
+                                       third=perspective)
+        relations.add(relation)
         duplicated.__parent__ = container
-
         return duplicated.identifier
 

Modified: cpsskins/branches/paris-sprint-2006/elements/display.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/elements/display.py     (original)
+++ cpsskins/branches/paris-sprint-2006/elements/display.py     Tue Jun  6 
11:24:25 2006
@@ -28,11 +28,10 @@
 from cpsskins.elements.interfaces import IDisplayable, IDisplay
 from cpsskins.perspectives.interfaces import IPerspective
 from cpsskins.relations import DyadicRelation, TriadicRelation
-from cpsskins.relations.interfaces import IRelationTool
 from cpsskins.ontology import hasDisplay, hasDisplayFromPerspective
 from cpsskins.setup.interfaces import IType
 from cpsskins.storage.displays import IDisplayStorage
-from cpsskins.utils import getThemeManager
+from cpsskins.utils import getThemeManager, getRelationStorage
 
 USE_CURRENT_PERSPECTIVE = 1
 IGNORE_PERSPECTIVES = 2
@@ -99,27 +98,20 @@
 
         """
         object = self.context
-        reltool = IRelationTool(object)
+        relations = getRelationStorage(object)
 
         # if a perspective is specified get the display from that perspective
         if perspective is not None:
-            res = reltool.getSeconds(
-                predicate=hasDisplayFromPerspective,
-                first=object,
-                third=perspective,
-                )
+            res = relations.getSeconds(predicate=hasDisplayFromPerspective,
+                                       first=object, third=perspective)
             if res:
                 return res[0]
 
         # get the display independently of any perspective
         else:
-            res = reltool.getSeconds(
-                predicate=hasDisplay,
-                first=object,
-                )
+            res = relations.getSeconds(predicate=hasDisplay, first=object)
             if res:
                 return res[0]
-
         return default
 
     def storeDisplay(self, display):
@@ -160,28 +152,19 @@
 
         """
         context = self.context
-
         if not IDisplay.providedBy(display):
             raise ValueError("%s is not a display element" % repr(display))
-
         if perspective is None:
-            relation = DyadicRelation(
-                predicate=hasDisplay,
-                first=context,
-                second=display,
-                )
+            relation = DyadicRelation(predicate=hasDisplay, first=context,
+                                      second=display)
         else:
             if not IPerspective.providedBy(perspective):
                 raise ValueError("%s is not a perspective" % repr(perspective))
-            relation = TriadicRelation(
-                predicate=hasDisplayFromPerspective,
-                first=context,
-                second=display,
-                third=perspective,
-                )
-
-        reltool = IRelationTool(context)
-        reltool.add(relation)
+            relation = TriadicRelation(predicate=hasDisplayFromPerspective,
+                                       first=context, second=display,
+                                       third=perspective)
+        relations = getRelationStorage(context)
+        relations.add(relation)
         return display
 
     def removeDisplay(self, perspective=None):
@@ -192,12 +175,10 @@
         display = IDisplayable(context).getDisplay(perspective)
 
         # Remove the relation
-        reltool = IRelationTool(context)
-        relations = reltool.search(
-            first=context,
-            second=display,
-            predicate=hasDisplayFromPerspective)
-        reltool.remove(relations)
+        relations = getRelationStorage(context)
+        old_relations = relations.search(first=context, second=display,
+                                         predicate=hasDisplayFromPerspective)
+        relations.remove(old_relations)
 
         # remove the display
         displays.remove(display)

Modified: cpsskins/branches/paris-sprint-2006/elements/format.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/elements/format.py      (original)
+++ cpsskins/branches/paris-sprint-2006/elements/format.py      Tue Jun  6 
11:24:25 2006
@@ -27,9 +27,8 @@
 from cpsskins.elements.interfaces import IFormat, IFormattable
 from cpsskins.ontology import hasFormat, IFormatPredicate
 from cpsskins.relations import DyadicRelation
-from cpsskins.relations.interfaces import IRelationTool
 from cpsskins.setup.interfaces import IResource, IPreset, IType
-from cpsskins.utils import getThemeManager
+from cpsskins.utils import getThemeManager, getRelationStorage
 
 class Format(Element):
 
@@ -44,8 +43,8 @@
         """Return the list of display elements associated to this
         format.
         """
-        reltool = IRelationTool(self)
-        return reltool.getFirsts(second=self, predicate=hasFormat)
+        relations = getRelationStorage(self)
+        return relations.getFirsts(second=self, predicate=hasFormat)
 
     def getPredicate(self):
         return IType(self).getContentType().getTaggedValue('predicate')
@@ -112,9 +111,9 @@
     def getFormats(self, name=u'', resolve=True):
         formats = []
         context = self.context
-        reltool = IRelationTool(context)
+        relations = getRelationStorage(context)
         predicate = self.getPredicate(name)
-        for format in reltool.getSeconds(first=context, predicate=predicate):
+        for format in relations.getSeconds(first=context, predicate=predicate):
             if resolve and IPreset.providedBy(format):
                 format = IResource(format).getResource()
             formats.append(format)
@@ -146,15 +145,15 @@
 
         """
         context = self.context
-        reltool = IRelationTool(context)
+        relations = getRelationStorage(context)
 
         predicate = self.getPredicate(IType(format).resourcename)
-        relations = reltool.search(first=context, predicate=predicate)
-        reltool.remove(relations)
+        old_relations = relations.search(first=context, predicate=predicate)
+        relations.remove(old_relations)
 
         relation = DyadicRelation(first=context, second=format,
                                   predicate=predicate)
-        reltool.add(relation)
+        relations.add(relation)
 
     def cloneFormat(self, format):
         """Clone the format

Modified: cpsskins/branches/paris-sprint-2006/elements/portlet.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/elements/portlet.py     (original)
+++ cpsskins/branches/paris-sprint-2006/elements/portlet.py     Tue Jun  6 
11:24:25 2006
@@ -28,7 +28,7 @@
 from cpsskins.elements.interfaces import IPortlet, ISlot, IDisplayable
 from cpsskins.ontology import hasPortlet, hasPortletFromPerspective
 from cpsskins.relations import DyadicRelation, TriadicRelation
-from cpsskins.relations.interfaces import IRelationTool
+from cpsskins.utils import getRelationStorage
 
 class Portlet(Persistent, Contained):
     """Base class for portlets."""
@@ -65,42 +65,32 @@
             portlet.__parent__ = target
 
             # update the slot -> portlet relation
-            reltool = IRelationTool(portlet)
+            relations = getRelationStorage(portlet)
 
             parents = []
             # if the portlet was set from a given perspective retrieve the
             # relations
-            parents = reltool.search(
-                predicate=hasPortletFromPerspective,
-                second=portlet,
-                )
+            parents = relations.search(predicate=hasPortletFromPerspective,
+                                       second=portlet)
 
-            perspective = parents and reltool.get(parents[0]).third or None
+            perspective = parents and relations.get(parents[0]).third or None
 
             # otherwise:
             if perspective is None:
-                parents = reltool.search(
-                    predicate=hasPortlet,
-                    second=portlet,
-                    )
-                relation = DyadicRelation(
-                    predicate=hasPortlet,
-                    first=target,
-                    second=portlet,
-                    )
+                parents = relations.search(predicate=hasPortlet,
+                                           second=portlet)
+                relation = DyadicRelation(predicate=hasPortlet, first=target,
+                                          second=portlet)
             else:
-                relation = TriadicRelation(
-                    predicate=hasPortletFromPerspective,
-                    first=target,
-                    second=portlet,
-                    third=perspective,
-                    )
+                relation = TriadicRelation(predicate=hasPortletFromPerspective,
+                                           first=target, second=portlet,
+                                           third=perspective)
 
             # store the new slot -> portlet relation
-            reltool.add(relation)
+            relations.add(relation)
 
             # remove the old relation
-            reltool.remove(parents)
+            relations.remove(parents)
 
             # update slots' displays
             src_display = IDisplayable(parent).getEffectiveDisplay(perspective)

Modified: cpsskins/branches/paris-sprint-2006/elements/presentation.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/elements/presentation.py        
(original)
+++ cpsskins/branches/paris-sprint-2006/elements/presentation.py        Tue Jun 
 6 11:24:25 2006
@@ -24,10 +24,9 @@
 from cpsskins.elements.interfaces import IDisplayable, IFormattable
 from cpsskins.elements.interfaces import  IPresentable
 from cpsskins.ontology import hasFormat, hasDisplay, hasDisplayFromPerspective
-from cpsskins.relations.interfaces import IRelationTool
-from cpsskins.setup.interfaces import IType
-from cpsskins.utils import getThemeManager
 from cpsskins.ontology import IFormatPredicate
+from cpsskins.setup.interfaces import IType
+from cpsskins.utils import getThemeManager, getRelationStorage
 
 class Presentable(object):
     """This adapter makes elements presentable, i.e. displayable and 
formattable
@@ -79,7 +78,7 @@
             raise ValueError("Must specify a destination perspective")
 
         context = self.context
-        reltool = IRelationTool(context)
+        relations = getRelationStorage(context)
 
         displayable = IDisplayable(context)
         default_display = displayable.getDisplay()
@@ -87,8 +86,8 @@
         displayable.setDisplay(display=display, perspective=perspective)
 
         formattable = IFormattable(display)
-        for r in reltool.search(first=default_display, predicate=hasFormat):
-            rel = reltool.get(r)
+        for r in relations.search(first=default_display, predicate=hasFormat):
+            rel = relations.get(r)
             format = rel.second
             formattable.setFormat(format)
 
@@ -106,7 +105,7 @@
             raise ValueError("Must specify a perspective.")
 
         context = self.context
-        reltool = IRelationTool(context)
+        relations = getRelationStorage(context)
 
         displayable = IDisplayable(context)
         display = displayable.getDisplay(perspective)
@@ -116,8 +115,8 @@
         format = formattable.cloneFormat(current_format)
 
         predicate = getUtility(IFormatPredicate, name).predicate
-        relations = reltool.search(first=display, predicate=predicate)
-        reltool.remove(relations)
+        old_relations = relations.search(first=display, predicate=predicate)
+        relations.remove(old_relations)
 
         formattable.setFormat(format)
 
@@ -128,7 +127,7 @@
             raise ValueError("Must specify a perspective.")
 
         context = self.context
-        reltool = IRelationTool(context)
+        relations = getRelationStorage(context)
 
         display = IDisplayable(context).getDisplay(perspective)
         default_display = IDisplayable(context).getDisplay()
@@ -142,7 +141,7 @@
         associated to the element in various perspectives.
         """
         object = self.context
-        reltool = IRelationTool(object)
+        relations = getRelationStorage(object)
 
         tmutil = getThemeManager(object)
         presentations = {}
@@ -157,10 +156,10 @@
 
         format_names = []
         # override initial values
-        for r in reltool.search(first=object, predicate=hasDisplay) \
-               + reltool.search(first=object,
+        for r in relations.search(first=object, predicate=hasDisplay) \
+               + relations.search(first=object,
                                 predicate=hasDisplayFromPerspective):
-            rel = reltool.get(r)
+            rel = relations.get(r)
             display = rel.second
             formattable = IFormattable(display)
             perspective = len(rel) == 3 and rel.third or None
@@ -177,7 +176,8 @@
 
                 customizable = False
                 if perspective is not None:
-                    used_by = reltool.search(second=format, 
predicate=hasFormat)
+                    used_by = relations.search(second=format,
+                                               predicate=hasFormat)
                     customizable = len(used_by) > 1
                 format_info['customizable'] = customizable
                 format_info['effective'] = not customizable

Modified: cpsskins/branches/paris-sprint-2006/relations/configure.zcml
==============================================================================
--- cpsskins/branches/paris-sprint-2006/relations/configure.zcml        
(original)
+++ cpsskins/branches/paris-sprint-2006/relations/configure.zcml        Tue Jun 
 6 11:24:25 2006
@@ -101,15 +101,6 @@
   />
 
 
-  <!-- Relation tool -->
-
-  <adapter
-      for="*"
-      provides="cpsskins.relations.interfaces.IRelationTool"
-      factory="cpsskins.relations.tool.RelationTool"
-  />
-
-
   <!-- Factories -->
   <utility
       name="cpsskins.relation.monad"

Modified: cpsskins/branches/paris-sprint-2006/tests/setup.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/tests/setup.py  (original)
+++ cpsskins/branches/paris-sprint-2006/tests/setup.py  Tue Jun  6 11:24:25 2006
@@ -33,9 +33,7 @@
 from cpsskins.elements.interfaces import IElement, IDisplay
 from cpsskins.perspectives import perspective
 from cpsskins.perspectives.interfaces import IPerspective
-from cpsskins.relations.interfaces import IRelationTool
 from cpsskins.relations.interfaces import IRelatable
-from cpsskins.relations.tool import RelationTool
 from cpsskins.setup.adapters import Type, Identifiable
 from cpsskins.setup.interfaces import IType, IIdentifiable, IResourceManager
 from cpsskins.setup.interfaces import IPreset
@@ -51,7 +49,6 @@
     # adapters
     gsm.registerAdapter(Formattable, (IDisplay,), IPathAdapter, 'formattable')
     gsm.registerAdapter(Displayable, (IElement,), IPathAdapter, 'displayable')
-    gsm.registerAdapter(RelationTool, (IElement,), IRelationTool)
     gsm.registerAdapter(Relatable, (IElement,), IRelatable)
     gsm.registerAdapter(Identifiable, (IElement,), IIdentifiable)
     gsm.registerAdapter(Identifiable, (IPreset,), IIdentifiable)

Modified: cpsskins/branches/paris-sprint-2006/tests/test_relations.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/tests/test_relations.py (original)
+++ cpsskins/branches/paris-sprint-2006/tests/test_relations.py Tue Jun  6 
11:24:25 2006
@@ -25,7 +25,6 @@
     return unittest.TestSuite((
         DocTestSuite('cpsskins.relations.relations'),
         DocTestSuite('cpsskins.relations.predicates'),
-        DocTestSuite('cpsskins.relations.tool'),
         ))
 
 if __name__ == '__main__':

Modified: cpsskins/branches/paris-sprint-2006/thememanager.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/thememanager.py (original)
+++ cpsskins/branches/paris-sprint-2006/thememanager.py Tue Jun  6 11:24:25 2006
@@ -35,7 +35,6 @@
 from cpsskins.perspectives import Perspective
 from cpsskins.perspectives.interfaces import IPerspective
 from cpsskins.relations import MonadicRelation
-from cpsskins.relations.interfaces import IRelationTool
 from cpsskins.setup.interfaces import IResourceManager, IResource
 from cpsskins.setup.presets import Presets, IPresets
 from cpsskins.storage.displays import DisplayStorage, IDisplayStorage
@@ -334,17 +333,17 @@
     def removeDisplays(self, object):
         """Remove the displays of a given element
         """
-        reltool = IRelationTool(object)
-        display_relations = reltool.search(first=object, predicate=hasDisplay)
+        relations = self.getRelationStorage()
+        display_relations = relations.search(first=object, 
predicate=hasDisplay)
 
         # Physically remove the displays
         for rel in display_relations:
-            display = reltool.get(rel).second
+            display = relations.get(rel).second
             container = getParent(display)
             del container[getName(display)]
 
         # Remove the relation
-        reltool.remove(display_relations)
+        relations.remove(display_relations)
 
     ###################################################################
     # Formats
@@ -359,9 +358,9 @@
             del container[getName(format)]
 
         # Remove the relation
-        reltool = IRelationTool(object)
-        relations = reltool.search(first=object, predicate=hasFormat)
-        reltool.remove(relations)
+        relations = self.getRelationStorage()
+        format_relations = relations.search(first=object, predicate=hasFormat)
+        relations.remove(format_relations)
 
     ###################################################################
     # Perspectives

Modified: cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/views.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/views.py       
(original)
+++ cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/views.py       
Tue Jun  6 11:24:25 2006
@@ -28,13 +28,12 @@
 from cpsskins.elements.interfaces import IDisplay, IFormat
 from cpsskins.elements.interfaces import IDisplayable, IFormattable
 from cpsskins.relations import DyadicRelation
-from cpsskins.relations.interfaces import IRelationTool
 from cpsskins.setup.interfaces import IType, IIdentifiable
 from cpsskins.setup.interfaces import IResourceManager, IResource, IPreset
 from cpsskins.setup.io import importSite, exportSite
 from cpsskins.setup.snapshot import Snapshot
 from cpsskins.storage.interfaces import IStorage
-from cpsskins.utils import getThemeManager
+from cpsskins.utils import getThemeManager, getRelationStorage
 
 class Form(object):
     """An edit form for elements.
@@ -191,15 +190,15 @@
             raise TypeError("The resource must be a format.")
 
         # remove the existing display <--> format relation
-        reltool = IRelationTool(context)
+        relations = getRelationStorage(context)
         predicate = resource.predicate
-        old_rel = reltool.search(first=context, predicate=predicate)
-        reltool.remove(old_rel)
+        old_rel = relations.search(first=context, predicate=predicate)
+        relations.remove(old_rel)
 
         # create a new display <--> preset relation
         relation = DyadicRelation(first=context, second=preset,
                                   predicate=predicate)
-        reltool.add(relation)
+        relations.add(relation)
 
     def stopUsingPreset(self, uri=u''):
         """Stop using a preset referred to by its URI
@@ -222,17 +221,17 @@
         resource = IResource(preset).getResource()
 
         # remove the old display <-> preset relation
-        reltool = IRelationTool(context)
+        relations = getRelationStorage(context)
         predicate = resource.predicate
-        old_rel = reltool.search(first=context, predicate=predicate)
-        reltool.remove(old_rel)
+        old_rel = relations.search(first=context, predicate=predicate)
+        relations.remove(old_rel)
 
         format = locationCopy(removeSecurityProxy(resource))
         formats.add(format)
 
         relation = DyadicRelation(first=context, second=format,
                                   predicate=predicate)
-        reltool.add(relation)
+        relations.add(relation)
 
     ### Sites  #########################################################
 

Modified: cpsskins/branches/paris-sprint-2006/utils.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/utils.py        (original)
+++ cpsskins/branches/paris-sprint-2006/utils.py        Tue Jun  6 11:24:25 2006
@@ -51,6 +51,9 @@
 
     raise ValueError("No theme management folder was found in this context.")
 
+def getRelationStorage(context=None, name=u''):
+    return getThemeManager(context, name).getRelationStorage()
+
 def addThemeSkeleton(context):
     # for testing purposes
     from cpsskins.elements.interfaces import IDisplayable, IFormattable
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to