[Checkins] SVN: grokui.base/branches/plugin-info/ Added plugin info traverser and base utility class

Souheil CHELFOUH souheil at chelfouh.com
Fri Feb 26 06:22:30 EST 2010


Log message for revision 109454:
  Added plugin info traverser and base utility class
  

Changed:
  A   grokui.base/branches/plugin-info/
  U   grokui.base/branches/plugin-info/src/grokui/base/__init__.py
  U   grokui.base/branches/plugin-info/src/grokui/base/interfaces.py
  U   grokui.base/branches/plugin-info/src/grokui/base/namespace.py

-=-
Modified: grokui.base/branches/plugin-info/src/grokui/base/__init__.py
===================================================================
--- grokui.base/trunk/src/grokui/base/__init__.py	2010-02-26 10:55:58 UTC (rev 109452)
+++ grokui.base/branches/plugin-info/src/grokui/base/__init__.py	2010-02-26 11:22:29 UTC (rev 109454)
@@ -1,4 +1,6 @@
-from grokui.base.interfaces import IGrokUIRealm, IUIPanel, IMainMenu
+from grokui.base.interfaces import IGrokUIRealm, IGrokUIPluginInfo
+from grokui.base.interfaces import IUIPanel, IMainMenu
+from grokui.base.info import BasePluginInfo
 from grokui.base.namespace import GrokUILayer, GrokUISkin, GrokUINamespace
 from grokui.base.contentproviders import Header, Footer, MainMenu, Messages
 from grokui.base.layout import GrokUIView

Modified: grokui.base/branches/plugin-info/src/grokui/base/interfaces.py
===================================================================
--- grokui.base/trunk/src/grokui/base/interfaces.py	2010-02-26 10:55:58 UTC (rev 109452)
+++ grokui.base/branches/plugin-info/src/grokui/base/interfaces.py	2010-02-26 11:22:29 UTC (rev 109454)
@@ -1,6 +1,8 @@
 # -*- coding: utf-8 -*-
 
+from zope.dublincore.interfaces import IDCDescriptiveProperties
 from zope.interface import Interface, Attribute
+from zope.schema import TextLine
 
 
 class IMainMenu(Interface):
@@ -19,3 +21,10 @@
     """
     root = Attribute("The root folder object.")
     request = Attribute("The HTTP request object.")
+
+
+class IGrokUIPluginInfo(IDCDescriptiveProperties):
+    """Represents a component dedicated to give specific info
+    about a grokui extension package.
+    """
+    version = TextLine(title="Version of the package")

Modified: grokui.base/branches/plugin-info/src/grokui/base/namespace.py
===================================================================
--- grokui.base/trunk/src/grokui/base/namespace.py	2010-02-26 10:55:58 UTC (rev 109452)
+++ grokui.base/branches/plugin-info/src/grokui/base/namespace.py	2010-02-26 11:22:29 UTC (rev 109454)
@@ -4,10 +4,12 @@
 import grok
 from zope.site.interfaces import IRootFolder
 from zope.location import LocationProxy
+from zope.component import queryUtility
 from zope.publisher.browser import applySkin
 from zope.publisher.interfaces import browser
+from zope.publisher.interfaces import NotFound
 from zope.traversing.interfaces import ITraversable
-from grokui.base.interfaces import IGrokUIRealm
+from grokui.base.interfaces import IGrokUIRealm, IGrokUIPluginInfo
 
 
 class GrokUILayer(grok.IDefaultBrowserLayer):
@@ -35,3 +37,19 @@
 
     def traverse(self, name, ignore):
         return LocationProxy(self, self.root, "++grokui++")
+
+
+class GrokUIPluginInfo(grok.MultiAdapter):
+    grok.name('info')
+    grok.provides(ITraversable)
+    grok.adapts(IGrokUIRealm, browser.IBrowserRequest)
+
+    def __init__(self, context, request):
+        self.root = context
+        self.request = request
+
+    def traverse(self, name, ignore):
+        info = queryUtility(IGrokUIPluginInfo, name=name)
+        if info is None:
+            raise NotFound(self.context, name, self.request)
+        return LocationProxy(info, self.context, "++info++%s" % name)



More information about the checkins mailing list