[Checkins] SVN: grok/trunk/ merge -r 106040:106058 svn+ssh://svn.zope.org/repos/main/grok/branches/jw-viewsupport-mixin
Jan-Wijbrand Kolman
janwijbrand at gmail.com
Fri Nov 27 05:55:16 EST 2009
Log message for revision 106060:
merge -r 106040:106058 svn+ssh://svn.zope.org/repos/main/grok/branches/jw-viewsupport-mixin
Changed:
U grok/trunk/src/grok/components.py
U grok/trunk/src/grok/util.py
U grok/trunk/versions.cfg
-=-
Modified: grok/trunk/src/grok/components.py
===================================================================
--- grok/trunk/src/grok/components.py 2009-11-27 10:52:41 UTC (rev 106059)
+++ grok/trunk/src/grok/components.py 2009-11-27 10:55:15 UTC (rev 106060)
@@ -235,14 +235,9 @@
"""
interface.implements(interfaces.IGrokView)
- def application_url(self, name=None):
+ def application_url(self, name=None, data=None):
"""Return the URL of the nearest enclosing `grok.Application`."""
- obj = self.context
- while obj is not None:
- if isinstance(obj, Application):
- return self.url(obj, name)
- obj = obj.__parent__
- raise ValueError("No application found.")
+ return util.application_url(self.request, self.context, name, data)
def flash(self, message, type='message'):
"""Send a short message to the user."""
@@ -284,7 +279,13 @@
interface.implements(interfaces.IGrokForm)
-class XMLRPC(object):
+class ViewishViewSupport(grokcore.view.ViewSupport):
+
+ def application_url(self, name=None, data=None):
+ return util.application_url(self.request, self.context, name, data)
+
+
+class XMLRPC(ViewishViewSupport):
"""Base class for XML-RPC endpoints in Grok applications.
When an application creates a subclass of `grok.XMLRPC`, it is
@@ -311,21 +312,16 @@
"""
-class REST(zope.location.Location):
+class REST(zope.location.Location, ViewishViewSupport):
"""Base class for REST views in Grok applications."""
interface.implements(interfaces.IREST)
def __init__(self, context, request):
self.context = self.__parent__ = context
self.request = request
- self.body = request.bodyStream.getCacheStream().read()
- @property
- def response(self):
- return self.request.response
-
-class JSON(BrowserPage):
+class JSON(BrowserPage, ViewishViewSupport):
"""Base class for JSON views in Grok applications."""
interface.implements(interfaces.IGrokSecurityView)
Modified: grok/trunk/src/grok/util.py
===================================================================
--- grok/trunk/src/grok/util.py 2009-11-27 10:52:41 UTC (rev 106059)
+++ grok/trunk/src/grok/util.py 2009-11-27 10:55:15 UTC (rev 106060)
@@ -21,6 +21,7 @@
from zope.exceptions.interfaces import DuplicationError
from zope.security.checker import NamesChecker, defineChecker
+from grokcore.view.util import url
from grokcore.security.util import check_permission
@@ -91,3 +92,12 @@
grok.notify(grok.ApplicationInitializedEvent(application))
return application
+
+
+def application_url(request, obj, name=None, data={}):
+ """Return the URL of the nearest enclosing `grok.Application`."""
+ while obj is not None:
+ if isinstance(obj, grok.Application):
+ return url(request, obj, name, data)
+ obj = obj.__parent__
+ raise ValueError("No application found.")
Modified: grok/trunk/versions.cfg
===================================================================
--- grok/trunk/versions.cfg 2009-11-27 10:52:41 UTC (rev 106059)
+++ grok/trunk/versions.cfg 2009-11-27 10:55:15 UTC (rev 106060)
@@ -6,7 +6,7 @@
grokcore.security = 1.2
grokcore.site = 1.1
grokcore.startup = 0.4
-grokcore.view = 1.13a1
+grokcore.view = 1.13a2
grokcore.viewlet = 1.3
grokui.admin = 0.3.2
martian = 0.11.1
More information about the checkins
mailing list