reversing webdav changes for alec

parent 8ff15818
......@@ -114,51 +114,6 @@ def test_traversable():
...
an_attribute
If we use WebDAV to get an object no acquisition should be performed,
otherwise content creation will break:
>>> from Products.Five.tests.testing import manage_addFiveTraversableFolder
>>> manage_addFiveTraversableFolder(self.folder, 'traversable_folder', 'Traversable')
Let's verify that we can get our object properties via WebDAV:
>>> print http(r'''
... PROPFIND /test_folder_1_/fancy HTTP/1.1
... Content-Type: text/xml; charset="utf-8"
... Depth: 0
...
... <?xml version="1.0" encoding="utf-8"?>
... <DAV:propfind xmlns:DAV="DAV:"
... xmlns:zope="http://www.zope.org/propsets/default">
... <DAV:prop><zope:title/></DAV:prop>
... </DAV:propfind>
... ''')
HTTP/1.1 200 OK
...
PROPFIND
And that a normal http request will acquire the object:
>>> print http(r'''
... GET /test_folder_1_/traversable_folder/fancy HTTP/1.1
... ''')
HTTP/1.1 200 OK
...
<FancyContent at >
But that a WebDAV request will not:
>>> print http(r'''
... PROPFIND /test_folder_1_/traversable_folder/fancy HTTP/1.1
... Content-Type: text/xml; charset="utf-8"
... Depth: 0
...
... <?xml version="1.0" encoding="utf-8"?>
... <DAV:propfind xmlns:DAV="DAV:"
... xmlns:zope="http://www.zope.org/propsets/default">
... <DAV:prop><zope:title/></DAV:prop>
... </DAV:propfind>
... ''')
HTTP/1.1 404 Not Found
...
Clean up:
......
......@@ -33,8 +33,6 @@ from AccessControl import getSecurityManager
from Acquisition import aq_base
from Products.Five.security import newInteraction
from webdav.NullResource import NullResource
_marker = object
class FakeRequest(dict):
......@@ -97,27 +95,14 @@ class Traversable:
# potential WebDAV issues, in particular we should not perform
# acquisition for webdav requests, and should return a NullResource
# when appropriate.
method = REQUEST.get('REQUEST_METHOD', 'GET').upper()
if (len(REQUEST.get('TraversalRequestNameStack', ())) == 0 and
not (method in ('GET', 'HEAD', 'POST') and not
isinstance(REQUEST.RESPONSE, xmlrpc.Response))):
if getattr(aq_base(self), name, None) is not None:
return getattr(self, name)
else:
# XXX: This may be unnecessary as Zope itself doesn't do it,
# but it shouldn't be harmful
if (method in ('PUT', 'MKCOL') and not
isinstance(RESPONSE, xmlrpc.Response)):
return NullResource(self, name, REQUEST).__of__(self)
else:
try:
return getattr(self, name)
except AttributeError:
pass
try:
return self[name]
except (AttributeError, KeyError):
pass
try:
return getattr(self, name)
except AttributeError:
pass
try:
return self[name]
except (AttributeError, KeyError):
pass
raise AttributeError, name
__bobo_traverse__.__five_method__ = True
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment