Author: jmorliaguet
Date: Sun Jun 18 21:34:19 2006
New Revision: 3456

Modified:
   cpsskins/branches/paris-sprint-2006/standard/negotiation/__init__.py
   cpsskins/branches/paris-sprint-2006/standard/negotiation/engine.py
   cpsskins/branches/paris-sprint-2006/standard/negotiation/interfaces.py
   cpsskins/branches/paris-sprint-2006/standard/negotiation/page.py
   cpsskins/branches/paris-sprint-2006/standard/negotiation/page.zcml
   cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.py
   cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.zcml
   cpsskins/branches/paris-sprint-2006/standard/negotiation/theme.py
   cpsskins/branches/paris-sprint-2006/standard/negotiation/theme.zcml
   cpsskins/branches/paris-sprint-2006/thememanager.py

Log:

- added negotiation schemes for local themes, pages and perspectives



Modified: cpsskins/branches/paris-sprint-2006/standard/negotiation/__init__.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/negotiation/__init__.py        
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/negotiation/__init__.py        
Sun Jun 18 21:34:19 2006
@@ -17,3 +17,11 @@
 """
 __docformat__ = "reStructuredText"
 
+from zope.deferredimport import defineFrom
+
+defineFrom('cpsskins.standard.negotiation.interfaces',
+           'IQueryParameterNegotiationScheme', 'ICookieNegotiationScheme',
+           'ILocalNegotiationScheme', 'IDefaultNegotiationScheme',
+           'IContextNegotiationScheme', 'IRequestNegotiationScheme',
+           'ILocationNegotiationScheme', 'ISessionNegotiationScheme')
+

Modified: cpsskins/branches/paris-sprint-2006/standard/negotiation/engine.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/negotiation/engine.py  
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/negotiation/engine.py  Sun Jun 
18 21:34:19 2006
@@ -20,8 +20,7 @@
 from zope.interface import implements
 
 from cpsskins.browser.negotiation.scheme import NegotiationScheme
-from cpsskins.standard.negotiation.interfaces import \
-     IRequestNegotiationScheme
+from cpsskins.standard.negotiation import IRequestNegotiationScheme
 
 class Request(NegotiationScheme):
     """Look for an engine name as a request annotation.

Modified: cpsskins/branches/paris-sprint-2006/standard/negotiation/interfaces.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/negotiation/interfaces.py      
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/negotiation/interfaces.py      
Sun Jun 18 21:34:19 2006
@@ -47,3 +47,7 @@
     """Contextual negotiation.
     """
 
+class ILocationNegotiationScheme(INegotiationScheme):
+    """Location negotiation.
+    """
+

Modified: cpsskins/branches/paris-sprint-2006/standard/negotiation/page.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/negotiation/page.py    
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/negotiation/page.py    Sun Jun 
18 21:34:19 2006
@@ -21,12 +21,14 @@
 from zope.component import queryUtility
 
 from cpsskins.browser.negotiation.scheme import NegotiationScheme
-from cpsskins.standard.negotiation.interfaces import (
-    IQueryParameterNegotiationScheme, ICookieNegotiationScheme,
-    ILocalNegotiationScheme, IDefaultNegotiationScheme,
-    IContextNegotiationScheme)
-
 from cpsskins.elements.interfaces import IThemePage
+from cpsskins.standard.negotiation import IQueryParameterNegotiationScheme
+from cpsskins.standard.negotiation import ICookieNegotiationScheme
+from cpsskins.standard.negotiation import ILocalNegotiationScheme
+from cpsskins.standard.negotiation import IDefaultNegotiationScheme
+from cpsskins.standard.negotiation import IContextNegotiationScheme
+from cpsskins.standard.negotiation import ILocationNegotiationScheme
+from cpsskins.utils import getThemeManager
 
 class QueryParameter(NegotiationScheme):
     """Look for a page whose name is passed as a URL query parameter:
@@ -77,3 +79,13 @@
             return self.context
         return None
 
+class Location(NegotiationScheme):
+    """Look for a page among locations
+    """
+    implements(ILocationNegotiationScheme)
+
+    def __call__(self):
+        context = self.context
+        tmutil = getThemeManager(context)
+        return tmutil.getLocation(context, root=u'pages')
+

Modified: cpsskins/branches/paris-sprint-2006/standard/negotiation/page.zcml
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/negotiation/page.zcml  
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/negotiation/page.zcml  Sun Jun 
18 21:34:19 2006
@@ -14,6 +14,11 @@
     />
 
     <scheme
+        class=".page.Location"
+        interface=".interfaces.ILocationNegotiationScheme"
+    />
+
+    <scheme
         class=".page.Local"
         interface=".interfaces.ILocalNegotiationScheme"
     />

Modified: 
cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.py     
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.py     
Sun Jun 18 21:34:19 2006
@@ -21,8 +21,19 @@
 from zope.interface import implements
 
 from cpsskins.browser.negotiation.scheme import NegotiationScheme
-from cpsskins.standard.negotiation.interfaces import \
-     ISessionNegotiationScheme
+from cpsskins.standard.negotiation import ISessionNegotiationScheme
+from cpsskins.standard.negotiation import ILocationNegotiationScheme
+from cpsskins.utils import getThemeManager
+
+class Location(NegotiationScheme):
+    """Look for a perspective among locations
+    """
+    implements(ILocationNegotiationScheme)
+
+    def __call__(self):
+        context = self.context
+        tmutil = getThemeManager(context)
+        return tmutil.getLocation(context, root=u'perspectives')
 
 class Session(NegotiationScheme):
     """Look for a perspective in the session.

Modified: 
cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.zcml
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.zcml   
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/negotiation/perspective.zcml   
Sun Jun 18 21:34:19 2006
@@ -8,6 +8,11 @@
         interface=".interfaces.ISessionNegotiationScheme"
     />
 
+    <scheme
+        class=".perspective.Location"
+        interface=".interfaces.ILocationNegotiationScheme"
+    />
+
   </negotiationchain>
 
 </configure>

Modified: cpsskins/branches/paris-sprint-2006/standard/negotiation/theme.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/negotiation/theme.py   
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/negotiation/theme.py   Sun Jun 
18 21:34:19 2006
@@ -21,12 +21,15 @@
 from zope.interface import implements
 
 from cpsskins.browser.negotiation.scheme import NegotiationScheme
-from cpsskins.standard.negotiation.interfaces import (
-    IQueryParameterNegotiationScheme, ICookieNegotiationScheme,
-    ILocalNegotiationScheme, IDefaultNegotiationScheme,
-    IContextNegotiationScheme)
+from cpsskins.standard.negotiation import IQueryParameterNegotiationScheme
+from cpsskins.standard.negotiation import ICookieNegotiationScheme
+from cpsskins.standard.negotiation import ILocalNegotiationScheme
+from cpsskins.standard.negotiation import IDefaultNegotiationScheme
+from cpsskins.standard.negotiation import IContextNegotiationScheme
+from cpsskins.standard.negotiation import ILocationNegotiationScheme
 
 from cpsskins.elements.interfaces import ITheme
+from cpsskins.utils import getThemeManager
 
 class QueryParameter(NegotiationScheme):
     """Look for a theme whose name is passed as a URL query parameter:
@@ -77,3 +80,13 @@
             return self.context
         return None
 
+class Location(NegotiationScheme):
+    """Look for a theme among locations
+    """
+    implements(ILocationNegotiationScheme)
+
+    def __call__(self):
+        context = self.context
+        tmutil = getThemeManager(context)
+        return tmutil.getLocation(context, root=u'themes')
+

Modified: cpsskins/branches/paris-sprint-2006/standard/negotiation/theme.zcml
==============================================================================
--- cpsskins/branches/paris-sprint-2006/standard/negotiation/theme.zcml 
(original)
+++ cpsskins/branches/paris-sprint-2006/standard/negotiation/theme.zcml Sun Jun 
18 21:34:19 2006
@@ -19,6 +19,11 @@
     />
 
     <scheme
+        class=".theme.Location"
+        interface=".interfaces.ILocationNegotiationScheme"
+    />
+
+    <scheme
         class=".theme.Default"
         interface=".interfaces.IDefaultNegotiationScheme"
     />

Modified: cpsskins/branches/paris-sprint-2006/thememanager.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/thememanager.py (original)
+++ cpsskins/branches/paris-sprint-2006/thememanager.py Sun Jun 18 21:34:19 2006
@@ -19,14 +19,14 @@
 
 import logging
 
+from zope.app.container.btree import BTreeContainer
 from zope.app.container.interfaces import INameChooser
 from zope.component import getUtility
 from zope.component.persistentregistry import PersistentComponents
-from zope.traversing.api import getName, getParent
 from zope.interface import implements, Interface
 from zope.i18nmessageid import MessageFactory
 from zope.schema import TextLine
-from zope.app.container.btree import BTreeContainer
+from zope.traversing.api import getName, getParent, getPath
 
 from cpsskins.caching import ImageCache, IImageCache
 from cpsskins.elements.interfaces import IFormattable
@@ -135,8 +135,8 @@
     def addPerspective(perspective, id):
         """Add a perspective to the storage"""
 
-    def getLocations(context):
-        """Return the list of locations in a given context"""
+    def getLocation(context):
+        """Return the location in a given context"""
 
 class ThemeManagementFolder(BTreeContainer, PersistentComponents):
     """A theme management utility that can contain multiple .
@@ -342,8 +342,10 @@
                            context=self)
 
     ###################################################################
-    # Location
+    # Locations
     ###################################################################
 
-    def getLocations(self, context):
-        raise NotImplementedError
+    def getLocation(self, context, root=u''):
+        locations = self.getLocationStorage()
+        path = getPath(context)
+        return locations.find(path, root)
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to