[Zope-Checkins] CVS: Zope/lib/python/OFS - ObjectManager.py:1.141.6.5 SimpleItemInterfaces.py:1.1.2.3
Shane Hathaway
shane@digicool.com
Thu, 4 Oct 2001 16:53:34 -0400
Update of /cvs-repository/Zope/lib/python/OFS
In directory cvs.zope.org:/tmp/cvs-serv24031
Modified Files:
Tag: ComponentArchitecture-branch
ObjectManager.py SimpleItemInterfaces.py
Log Message:
You can now traverse to CA objects in WebDAV and FTP
=== Zope/lib/python/OFS/ObjectManager.py 1.141.6.4 => 1.141.6.5 ===
from zLOG import LOG, ERROR
import sys,string,fnmatch,copy
+
from App.ZopeComponents import listAddableTypes, AdderEntry, \
convertMetaTypeList, Adder
from ZPublisher.Browser import BrowserPublish
+from ZPublisher.FTP import FTPPublish
+from ZPublisher.WebDAV import WebDAVPublish
import ComponentArchitecture
from SimpleItemInterfaces import ObjectManagerInterface
@@ -676,11 +679,17 @@
# Note that we have to tolerate failure here, because
# Broken objects won't stat correctly. If an object fails
# to be able to stat itself, we will ignore it.
- try: stat=marshal.loads(v.manage_FTPstat(REQUEST))
- except: stat=None
+ if not FTPPublish.isImplementedBy(v):
+ v = ComponentArchitecture.getPresentation(
+ v, '_publish', FTPPublish, v)
+ m = getattr(v, 'manage_FTPstat', None)
+ if m is not None:
+ stat=marshal.loads(m(REQUEST))
+ else:
+ stat=None
if stat is not None:
out=out+((k,stat),)
- return marshal.dumps(out)
+ return marshal.dumps(out)
def manage_FTPstat(self,REQUEST):
"Psuedo stat used for FTP listings"
@@ -717,7 +726,7 @@
return NullResource(self, key, request).__of__(self)
raise KeyError, key
- def __bobo_traverse__(self, request, name=None):
+ def _browser_traverse(self, request, name=None):
if name and name[:3] == '(p)':
return ComponentArchitecture.getPresentation(
self, name[3:], BrowserPublish)
@@ -733,18 +742,41 @@
# Waaa. unrestrictedTraverse calls us with a fake REQUEST.
# There is proabably a better fix for this.
raise KeyError, name
- if not BrowserPublish.isImplementedBy(subob):
- subob = ComponentArchitecture.getPresentation(
- subob, '_publish', BrowserPublish, subob) # Lame: use a default
+ subob = ComponentArchitecture.getPresentation(
+ subob, '_publish', BrowserPublish, subob)
return subob
- def __browser_default__(self, request):
+ def _browser_default(self, request):
p = ComponentArchitecture.getPresentation(
self, '_publish', BrowserPublish, None)
if p is None:
return (self, ())
else:
- return p.__browser_default__(request)
+ return p._browser_default(request)
+
+ def _ftp_traverse(self, request, name):
+ subob = self._getOb(name, None)
+ if subob is not None:
+ subob = ComponentArchitecture.getPresentation(
+ subob, '_publish', FTPPublish, subob)
+ return subob
+ p = ComponentArchitecture.getPresentation(
+ self, '_publish', FTPPublish, None)
+ if p is not None:
+ return p._ftp_traverse(request, name)
+ return getattr(self, name)
+
+ def _webdav_traverse(self, request, name):
+ subob = self._getOb(name, None)
+ if subob is not None:
+ subob = ComponentArchitecture.getPresentation(
+ subob, '_publish', WebDAVPublish, subob)
+ return subob
+ p = ComponentArchitecture.getPresentation(
+ self, '_publish', WebDAVPublish, None)
+ if p is not None:
+ return p._webdav_traverse(request, name)
+ return getattr(self, name)
class ObjectManagerAdder (Acquisition.Implicit):
=== Zope/lib/python/OFS/SimpleItemInterfaces.py 1.1.2.2 => 1.1.2.3 ===
import Interface
from ComponentArchitecture.Content import Content
+from ZPublisher.FTP import FTPPublish
+from ZPublisher.Browser import BrowserPublish
class SimpleItemInterface (Content):
@@ -8,7 +10,10 @@
"""
-class ObjectManagerInterface (SimpleItemInterface):
+class ObjectManagerInterface (SimpleItemInterface,
+ FTPPublish,
+ BrowserPublish,
+ ):
"""
"""