[Zope-Checkins] CVS: Zope/lib/python/ZPublisher - BaseRequest.py:1.39.20.1
Shane Hathaway
shane@digicool.com
Wed, 22 Aug 2001 15:18:31 -0400
Update of /cvs-repository/Zope/lib/python/ZPublisher
In directory cvs.zope.org:/tmp/cvs-serv14914/ZPublisher
Modified Files:
Tag: ComponentArchitecture-branch
BaseRequest.py
Log Message:
Moved from NR-branch.
=== Zope/lib/python/ZPublisher/BaseRequest.py 1.39 => 1.39.20.1 ===
no_acquire_flag=0
+ checked_default = 0
# Set the default method
if method=='GET' or method=='POST':
@@ -312,19 +313,33 @@
# Check for method:
if path:
entry_name = path.pop()
- elif (method and hasattr(object,method)
- and entry_name != method
- and getattr(object, method) is not None):
- request._hacked_path=1
- entry_name = method
else:
- if (hasattr(object, '__call__') and
- hasattr(object.__call__,'__roles__')):
- roles=object.__call__.__roles__
- if request._hacked_path:
- i=rfind(URL,'/')
- if i > 0: response.setBase(URL[:i])
- break
+ # Finished the URL. Now publish a default view.
+ psteps = None
+ if not checked_default:
+ checked_default = 1
+ default = getattr(object, '__browser_default__', None)
+ if default is not None:
+ object, psteps = default(request)
+ if psteps:
+ request._hacked_path=1
+ entry_name = psteps[0]
+ path.extend(psteps[1:])
+ method = None # Don't hack the path again.
+ if not psteps:
+ if (method and hasattr(object,method)
+ and entry_name != method
+ and getattr(object, method) is not None):
+ request._hacked_path=1
+ entry_name = method
+ else:
+ if (hasattr(object, '__call__') and
+ hasattr(object.__call__,'__roles__')):
+ roles=object.__call__.__roles__
+ if request._hacked_path:
+ i=rfind(URL,'/')
+ if i > 0: response.setBase(URL[:i])
+ break
if not entry_name: continue
step = quote(entry_name)
_steps.append(step)