Author: jmorliaguet
Date: Fri Dec  9 17:58:18 2005
New Revision: 2003

Modified:
   cpsskins/branches/jmo-perspectives/browser/editing/views.py
   cpsskins/branches/jmo-perspectives/elements/configure.zcml
   cpsskins/branches/jmo-perspectives/elements/element.py
   cpsskins/branches/jmo-perspectives/elements/interfaces.py
   cpsskins/branches/jmo-perspectives/engines/default/filters/style/__init__.py
   cpsskins/branches/jmo-perspectives/setup/adapters.py
   cpsskins/branches/jmo-perspectives/setup/interfaces.py
   cpsskins/branches/jmo-perspectives/setup/manager.py
   cpsskins/branches/jmo-perspectives/setup/setting.py
Log:

- name / id fixes



Modified: cpsskins/branches/jmo-perspectives/browser/editing/views.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/browser/editing/views.py (original)
+++ cpsskins/branches/jmo-perspectives/browser/editing/views.py Fri Dec  9 
17:58:18 2005
@@ -18,6 +18,7 @@
 __docformat__ = "reStructuredText"
 
 from zope.app.location.traversing import LocationPhysicallyLocatable
+from zope.app.location.pickling import locationCopy
 from zope.app.publisher.browser import BrowserView
 from zope.app.zapi import queryMultiAdapter, getMultiAdapter, getParent
 from zope.component import queryUtility, getUtility
@@ -191,8 +192,7 @@
         container = getParent(context)
         if not IStorage.providedBy(container):
             raise TypeError("The element is not located in a storage.")
-        resource = container.duplicate(removeSecurityProxy(context))
-        resource = removeSecurityProxy(resource)
+        resource = locationCopy(removeSecurityProxy(context))
         resources = getUtility(IResourceManager)
         resources.register(title=title, resource=resource, context=context)
         target = self.request.get('HTTP_REFERER', '.')

Modified: cpsskins/branches/jmo-perspectives/elements/configure.zcml
==============================================================================
--- cpsskins/branches/jmo-perspectives/elements/configure.zcml  (original)
+++ cpsskins/branches/jmo-perspectives/elements/configure.zcml  Fri Dec  9 
17:58:18 2005
@@ -21,6 +21,13 @@
       provides="cpsskins.relations.interfaces.IRelatable"
   />
 
+  <!-- this adapter makes elements identifiable -->
+  <adapter
+      for=".interfaces.IElement"
+      factory=".element.Identifiable"
+      provides="cpsskins.elements.interfaces.IIdentifiable"
+  />
+
   <adapter
       for=".interfaces.ISlot"
       factory=".slot.Relatable"

Modified: cpsskins/branches/jmo-perspectives/elements/element.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/elements/element.py      (original)
+++ cpsskins/branches/jmo-perspectives/elements/element.py      Fri Dec  9 
17:58:18 2005
@@ -29,6 +29,7 @@
 
 from cpsskins.elements.interfaces import IElement, IElementType, IType, INode
 from cpsskins.elements.interfaces import IInnerNode, ILeaf, INodeTraverser
+from cpsskins.elements.interfaces import IIdentifiable
 from cpsskins.relations.interfaces import IRelatable
 
 class Element(Contained):
@@ -48,9 +49,26 @@
         self.element = element
 
     def __str__(self):
-        id = getattr(self.element, 'identifier', u'')
+        """Unless stated otherwise elements are identified in a relation
+        by their 'identifier' attribute.
+        """
+        id = self.element.identifier or u''
         return str(id)
 
+class Identifiable(object):
+    """This adapter makes elements identifiable.
+    """
+    adapts(IElement)
+    implements(IIdentifiable)
+
+    def __init__(self, element):
+        self.element = element
+
+    def getIdentifier(self):
+        element = self.element
+        return str(IRelatable(element)) or \
+               str(IRelatable(element.__parent__)) or u''
+
 class Node(Element):
     """A Node is an element in a tree structure.
     """

Modified: cpsskins/branches/jmo-perspectives/elements/interfaces.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/elements/interfaces.py   (original)
+++ cpsskins/branches/jmo-perspectives/elements/interfaces.py   Fri Dec  9 
17:58:18 2005
@@ -33,6 +33,13 @@
 
     identifier = Attribute("The element's unique identifier.")
 
+class IIdentifiable(Interface):
+
+    def getIdentifier():
+        """Return the element's identifier which can be a unique
+        identifer or a name depending of the usage context.
+        """
+
 class IType(Interface):
 
     def getContentType():

Modified: 
cpsskins/branches/jmo-perspectives/engines/default/filters/style/__init__.py
==============================================================================
--- 
cpsskins/branches/jmo-perspectives/engines/default/filters/style/__init__.py    
    (original)
+++ 
cpsskins/branches/jmo-perspectives/engines/default/filters/style/__init__.py    
    Fri Dec  9 17:58:18 2005
@@ -24,6 +24,7 @@
 
 from cpsskins.engines.default.formats.style import IStyle
 from cpsskins.browser.rendering.interfaces import IFilterView
+from cpsskins.elements.interfaces import IIdentifiable
 
 startTag = re.compile('<.*?>')
 classAttr = re.compile(' class="(.*?)"')
@@ -134,8 +135,7 @@
         self.style = style
 
     def __str__(self):
-        """Return the style's class name"""
-        return 'style%s' % self.style.identifier
+        return 'style%s' % IIdentifiable(self.style).getIdentifier()
 
     def __call__(self):
         """Render the style in CSS"""

Modified: cpsskins/branches/jmo-perspectives/setup/adapters.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/setup/adapters.py        (original)
+++ cpsskins/branches/jmo-perspectives/setup/adapters.py        Fri Dec  9 
17:58:18 2005
@@ -41,5 +41,5 @@
         self.context = context
 
     def __str__(self):
-        return str(self.context.title)
+        return self.context.name
 

Modified: cpsskins/branches/jmo-perspectives/setup/interfaces.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/setup/interfaces.py      (original)
+++ cpsskins/branches/jmo-perspectives/setup/interfaces.py      Fri Dec  9 
17:58:18 2005
@@ -30,6 +30,8 @@
 class ISetting(Interface):
     """ """
 
+    name = Attribute("The setting's name.")
+
     title = TextLine(
         title=u"Title",
         description=u"The setting's title",

Modified: cpsskins/branches/jmo-perspectives/setup/manager.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/setup/manager.py (original)
+++ cpsskins/branches/jmo-perspectives/setup/manager.py Fri Dec  9 17:58:18 2005
@@ -46,8 +46,8 @@
         """
         # register as a global utility
         if context is None:
-            setting = GlobalSetting(title=title, resource=resource,
-                                    filename=filename)
+            setting = GlobalSetting(name=name, title=title,
+                                    resource=resource, filename=filename)
             provideUtility(setting, ISetting, name)
 
         # register as a local utility
@@ -55,8 +55,8 @@
             settings = getUtility(ISettings, context=context)
             chooser = INameChooser(settings)
             name = name or chooser.chooseName(title, object)
-            setting = LocalSetting(title=title, resource=resource,
-                      custom=custom)
+            setting = LocalSetting(name=name, title=title,
+                                   resource=resource, custom=custom)
             settings[name] = setting
 
             reg = UtilityRegistration(name, ISetting, settings[name])

Modified: cpsskins/branches/jmo-perspectives/setup/setting.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/setup/setting.py (original)
+++ cpsskins/branches/jmo-perspectives/setup/setting.py Fri Dec  9 17:58:18 2005
@@ -23,32 +23,28 @@
 
 from cpsskins.setup.interfaces import ISetting, IGlobalSetting, ILocalSetting
 
-class Setting(object):
-    """A setting configuration item.
-    """
-    implements(ISetting)
-
-    def __init__(self, title=u'', resource=None):
-        self.title = title
-        self.resource = resource
-
-class GlobalSetting(Setting):
+class GlobalSetting(object):
     """A local persistent setting
     """
     implements(IGlobalSetting)
 
-    def __init__(self, title=u'', resource=None, filename=None):
+    def __init__(self, name=u'', title=u'', resource=None, filename=None):
+        self.name = name
         self.title = title
-        self.resource = resource
         self.filename = filename
+        self.resource = resource
+        # add a reference from the resource to the setting
+        self.resource.__parent__ = self
 
-class LocalSetting(Setting, Persistent, Contained):
+class LocalSetting(Persistent, Contained):
     """A local persistent setting
     """
     implements(ILocalSetting)
 
-    def __init__(self, title=u'', resource=None, custom=False):
+    def __init__(self, name=u'', title=u'', resource=None, custom=False):
+        self.name = name
         self.title = title
-        self.resource = resource
         self.custom = custom
-
+        self.resource = resource
+        # add a reference from the resource to the setting
+        self.resource.__parent__ = self
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to