[Checkins] SVN: Sandbox/philikon/megrok.menu/ Grok extension that
configured menus and menu items.
Philipp von Weitershausen
philikon at philikon.de
Fri Jul 11 09:14:48 EDT 2008
Log message for revision 88252:
Grok extension that configured menus and menu items.
Changed:
A Sandbox/philikon/megrok.menu/
A Sandbox/philikon/megrok.menu/branches/
A Sandbox/philikon/megrok.menu/tags/
A Sandbox/philikon/megrok.menu/trunk/
A Sandbox/philikon/megrok.menu/trunk/buildout.cfg
A Sandbox/philikon/megrok.menu/trunk/setup.py
A Sandbox/philikon/megrok.menu/trunk/src/
A Sandbox/philikon/megrok.menu/trunk/src/megrok/
A Sandbox/philikon/megrok.menu/trunk/src/megrok/__init__.py
A Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/
A Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/__init__.py
A Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/component.py
A Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/grokker.py
A Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/meta.zcml
A Sandbox/philikon/megrok.menu/trunk/versions.cfg
-=-
Added: Sandbox/philikon/megrok.menu/trunk/buildout.cfg
===================================================================
--- Sandbox/philikon/megrok.menu/trunk/buildout.cfg (rev 0)
+++ Sandbox/philikon/megrok.menu/trunk/buildout.cfg 2008-07-11 13:14:47 UTC (rev 88252)
@@ -0,0 +1,15 @@
+[buildout]
+develop = .
+parts = interpreter test
+extends = versions.cfg
+versions = versions
+
+[interpreter]
+recipe = zc.recipe.egg
+eggs = megrok.menu
+interpreter = python
+
+[test]
+recipe = zc.recipe.testrunner
+eggs = megrok.menu
+defaults = ['--tests-pattern', '^f?tests$', '-v']
Added: Sandbox/philikon/megrok.menu/trunk/setup.py
===================================================================
--- Sandbox/philikon/megrok.menu/trunk/setup.py (rev 0)
+++ Sandbox/philikon/megrok.menu/trunk/setup.py 2008-07-11 13:14:47 UTC (rev 88252)
@@ -0,0 +1,30 @@
+from setuptools import setup, find_packages
+
+setup(name='megrok.menu',
+ version='0.1',
+ description="Grok extension to configure browser menus",
+ # Get more strings from http://www.python.org/pypi?%3Aaction=list_classifiers
+ classifiers=[
+ "Programming Language :: Python",
+ "Topic :: Software Development :: Libraries :: Python Modules",
+ ],
+ keywords='',
+ author='Philipp von Weitershausen',
+ author_email='philipp at weitershausen.de',
+ url='http://pypi.python.org/pypi/megrok.menu',
+ license='ZPL',
+ packages=find_packages('src'),
+ package_dir = {'': 'src'},
+ namespace_packages=['megrok'],
+ include_package_data=True,
+ zip_safe=False,
+ install_requires=[
+ 'setuptools',
+ 'martian',
+ 'grokcore.component',
+ 'grok', # just for the ViewGrokker
+ ],
+ entry_points="""
+ # -*- Entry points: -*-
+ """,
+ )
Property changes on: Sandbox/philikon/megrok.menu/trunk/setup.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/philikon/megrok.menu/trunk/src/megrok/__init__.py
===================================================================
--- Sandbox/philikon/megrok.menu/trunk/src/megrok/__init__.py (rev 0)
+++ Sandbox/philikon/megrok.menu/trunk/src/megrok/__init__.py 2008-07-11 13:14:47 UTC (rev 88252)
@@ -0,0 +1,6 @@
+# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
+try:
+ __import__('pkg_resources').declare_namespace(__name__)
+except ImportError:
+ from pkgutil import extend_path
+ __path__ = extend_path(__path__, __name__)
Property changes on: Sandbox/philikon/megrok.menu/trunk/src/megrok/__init__.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/__init__.py
===================================================================
--- Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/__init__.py (rev 0)
+++ Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/__init__.py 2008-07-11 13:14:47 UTC (rev 88252)
@@ -0,0 +1,4 @@
+from megrok.menu.component import menuitem, Menu
+
+# Provide these directives here as well:
+from grokcore.component import name, title, description
Property changes on: Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/__init__.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/component.py
===================================================================
--- Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/component.py (rev 0)
+++ Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/component.py 2008-07-11 13:14:47 UTC (rev 88252)
@@ -0,0 +1,18 @@
+import martian.util
+from zope.app.publisher.browser.menu import BrowserMenu
+
+class Menu(BrowserMenu):
+ pass
+
+class menuitem(martian.Directive):
+ scope = martian.CLASS
+ store = martian.ONCE
+
+ def factory(self, menu, icon=None, filter=None, order=0):
+ if martian.util.check_subclass(menu, Menu):
+ menu = grokcore.component.name.bind().get(menu)
+ if martian.util.not_unicode_or_ascii(menu):
+ raise GrokImportError(
+ "You can only pass unicode, ASCII, or a subclass "
+ "of megrok.menu.Menu to the '%s' directive." % self.name)
+ return (menu, icon, filter, order)
Property changes on: Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/component.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/grokker.py
===================================================================
--- Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/grokker.py (rev 0)
+++ Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/grokker.py 2008-07-11 13:14:47 UTC (rev 88252)
@@ -0,0 +1,63 @@
+import martian
+import grokcore.component
+import megrok.menu
+from martian.error import GrokError
+from grok.meta import ViewGrokker, default_view_name
+from zope.component import queryUtility
+from zope.configuration.exceptions import ConfigurationError
+from zope.publisher.interfaces.browser import IBrowserPage
+from zope.app.publisher.interfaces.browser import IMenuItemType
+from zope.app.publisher.browser.menumeta import menuDirective, menuItemDirective
+from zope.app.security.protectclass import protectName
+
+class MenuGrokker(martian.ClassGrokker):
+ martian.component(megrok.menu.Menu)
+ martian.priority(1500)
+ martian.directive(grokcore.component.name, get_default=default_view_name)
+ martian.directive(grokcore.component.title, default=u'')
+ martian.directive(grokcore.component.description, default=u'')
+
+ def execute(self, factory, config, name, title, description, **kw):
+ menuDirective(config, id=name, class_=factory,
+ title=title, description=description)
+ return True
+
+class MenuItemGrokker(ViewGrokker):
+ martian.directive(megrok.menu.menuitem)
+ martian.directive(grokcore.component.title, default=u'')
+ martian.directive(grokcore.component.description, default=u'')
+
+ def execute(self, factory, config, context, layer, name, permission,
+ menuitem, title, description, **kw):
+ if menuitem is None:
+ return False
+ menu_id, icon, filter, order = menuitem
+ try:
+ menu = config.resolve('zope.app.menus.'+menu_id)
+ except ConfigurationError, v:
+ raise GrokError("The %r menu could not be found. Please use "
+ "megrok.menu.Menu to register a menu first."
+ % menu_id, factory)
+ menuItemDirective(config, menu=menu, for_=context, action=name,
+ title=title, description=description, icon=icon,
+ filter=filter, permission=permission, layer=layer,
+ order=order)
+
+ # Menu items check whether the view that they refer to can be
+ # traversed to. Unfortunately, views will end up being
+ # security proxied during that fake traversal. For this to
+ # work then, we must define a checker not only for __call__
+ # but also for browserDefault and those other methods from
+ # IBrowserPage:
+ if permission is None:
+ permission = 'zope.Public'
+ for method_name in list(IBrowserPage):
+ if method_name == '__call__':
+ continue
+ config.action(
+ discriminator=('protectName', factory, method_name),
+ callable=protectName,
+ args=(factory, method_name, permission),
+ )
+
+ return True
Property changes on: Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/grokker.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/meta.zcml
===================================================================
--- Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/meta.zcml (rev 0)
+++ Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/meta.zcml 2008-07-11 13:14:47 UTC (rev 88252)
@@ -0,0 +1,9 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ xmlns:meta="http://namespaces.zope.org/meta"
+ xmlns:grok="http://namespaces.zope.org/grok">
+
+ <include package="grokcore.component" file="meta.zcml" />
+ <grok:grok package=".grokker" />
+
+</configure>
Property changes on: Sandbox/philikon/megrok.menu/trunk/src/megrok/menu/meta.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/philikon/megrok.menu/trunk/versions.cfg
===================================================================
--- Sandbox/philikon/megrok.menu/trunk/versions.cfg (rev 0)
+++ Sandbox/philikon/megrok.menu/trunk/versions.cfg 2008-07-11 13:14:47 UTC (rev 88252)
@@ -0,0 +1,107 @@
+[versions]
+grok = 0.13
+ClientForm = 0.2.7
+Pygments = 0.8.1
+RestrictedPython = 3.4.2
+ZConfig = 2.5.1
+ZODB3 = 3.8
+docutils = 0.4
+martian = 0.10
+grokcore.component = 1.4
+mechanize = 0.1.7b
+pytz = 2007k
+simplejson = 1.7.1
+z3c.autoinclude = 0.2.2
+z3c.flashmessage = 1.0
+z3c.testsetup = 0.2.1
+zc.catalog = 1.2
+zdaemon = 2.0.1
+zodbcode = 3.4
+zope.annotation = 3.4
+zope.app.apidoc = 3.4.3
+zope.app.applicationcontrol = 3.4.1
+zope.app.appsetup = 3.4.1
+zope.app.authentication = 3.4.1
+zope.app.basicskin = 3.4
+zope.app.broken = 3.4
+zope.app.catalog = 3.5.1
+zope.app.component = 3.4.1
+zope.app.container = 3.5.3
+zope.app.content = 3.4
+zope.app.debug = 3.4
+zope.app.dependable = 3.4
+zope.app.error = 3.5.1
+zope.app.exception = 3.4.1
+zope.app.file = 3.4.2
+zope.app.folder = 3.4
+zope.app.form = 3.4.1
+zope.app.generations = 3.4.1
+zope.app.http = 3.4.1
+zope.app.i18n = 3.4.4
+zope.app.interface = 3.4
+zope.app.intid = 3.4.1
+zope.app.keyreference = 3.4.1
+zope.app.locales = 3.4.1
+zope.app.onlinehelp = 3.4.1
+zope.app.pagetemplate = 3.4
+zope.app.preference = 3.4.1
+zope.app.principalannotation = 3.4
+zope.app.publication = 3.4.3
+zope.app.publisher = 3.4.1
+zope.app.renderer = 3.4
+zope.app.rotterdam = 3.4.1
+zope.app.schema = 3.4
+zope.app.security = 3.4
+zope.app.securitypolicy = 3.4.6
+zope.app.server = 3.4
+zope.app.session = 3.5.1
+zope.app.skins = 3.4
+zope.app.testing = 3.4.1
+zope.app.tree = 3.4
+zope.app.twisted = 3.4
+zope.app.wsgi = 3.4
+zope.app.zapi = 3.4
+zope.app.zcmlfiles = 3.4.3
+zope.app.zopeappgenerations = 3.4
+zope.cachedescriptors = 3.4
+zope.component = 3.4
+zope.configuration = 3.4
+zope.contentprovider = 3.4
+zope.contenttype = 3.4
+zope.copypastemove = 3.4
+zope.datetime = 3.4
+zope.deferredimport = 3.4
+zope.deprecation = 3.4
+zope.dottedname = 3.4.2
+zope.dublincore = 3.4
+zope.error = 3.5.1
+zope.event = 3.4
+zope.exceptions = 3.4
+zope.filerepresentation = 3.4
+zope.formlib = 3.4
+zope.hookable = 3.4
+zope.i18n = 3.4
+zope.i18nmessageid = 3.4.3
+zope.index = 3.4.1
+zope.interface = 3.4.1
+zope.lifecycleevent = 3.4
+zope.location = 3.4
+zope.minmax = 1.1
+zope.modulealias = 3.4
+zope.pagetemplate = 3.4
+zope.proxy = 3.4
+zope.publisher = 3.4.2
+zope.schema = 3.4
+zope.security = 3.4
+zope.securitypolicy = 3.4
+zope.server = 3.4.1
+zope.session = 3.4.1
+zope.size = 3.4
+zope.structuredtext = 3.4
+zope.tal = 3.4.1
+zope.tales = 3.4
+zope.testbrowser = 3.4.2
+zope.testing = 3.5.1
+zope.thread = 3.4
+zope.traversing = 3.4.0
+zope.viewlet = 3.4.2
More information about the Checkins
mailing list