[Checkins] SVN: zope.app.publisher/trunk/src/zope/app/publisher/browser/__init__.py If you use an empty name for a default view, as in
Paul Carduner
paulcarduner at gmail.com
Fri Dec 19 21:20:56 EST 2008
Log message for revision 94208:
If you use an empty name for a default view, as in
<defaultView name="">
then queryDefaultView would return None instead of "", which is
incorrect behavior. This checkin fixes this behavior. See the newly
added unit test for queryDefaultView for more information.
I hope someone reviews this.
Changed:
U zope.app.publisher/trunk/src/zope/app/publisher/browser/__init__.py
-=-
Modified: zope.app.publisher/trunk/src/zope/app/publisher/browser/__init__.py
===================================================================
--- zope.app.publisher/trunk/src/zope/app/publisher/browser/__init__.py 2008-12-19 22:27:31 UTC (rev 94207)
+++ zope.app.publisher/trunk/src/zope/app/publisher/browser/__init__.py 2008-12-20 02:20:55 UTC (rev 94208)
@@ -73,9 +73,44 @@
context, request)
def queryDefaultViewName(object, request, default=None, context=None):
+ """
+ query the default view for a given object and request.
+
+ >>> from zope.app.publisher.browser import queryDefaultViewName
+
+ lets create an object with a default view.
+
+ >>> import zope.interface
+ >>> class IMyObject(zope.interface.Interface):
+ ... pass
+ >>> class MyObject(object):
+ ... zope.interface.implements(IMyObject)
+ >>> queryDefaultViewName(MyObject(), object()) is None
+ True
+
+ Now we can will set a default view.
+
+ >>> import zope.component
+ >>> import zope.component.interfaces
+ >>> zope.component.provideAdapter('name',
+ ... adapts=(IMyObject, zope.interface.Interface),
+ ... provides=zope.component.interfaces.IDefaultViewName)
+ >>> queryDefaultViewName(MyObject(), object())
+ 'name'
+
+ This also works if the name is empty
+
+ >>> zope.component.provideAdapter('',
+ ... adapts=(IMyObject, zope.interface.Interface),
+ ... provides=zope.component.interfaces.IDefaultViewName)
+ >>> queryDefaultViewName(MyObject(), object())
+ ''
+ """
name = getSiteManager(context).adapters.lookup(
map(zope.interface.providedBy, (object, request)), IDefaultViewName)
- return name or default
+ if name is None:
+ return default
+ return name
class NotCompatibleAdapterError(Exception):
"""Adapter not compatible with
More information about the Checkins
mailing list