[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