Commit 55986d1b authored by Tres Seaver's avatar Tres Seaver

Don't publish acquired attributes if acquired object has no docstring.

See https://bugs.launchpad.net/zope2/+bug/713253/
parent 747ce19e
......@@ -4,6 +4,14 @@ Zope Changes
Change information for previous versions of Zope can be found in the
file HISTORY.txt.
Zope 2.10.13 (2011/02/04)
Bugs fixed
- Prevent publication of acquired attributes, where the acquired
object does not have a docstring.
https://bugs.launchpad.net/zope2/+bug/713253/
Zope 2.10.12 (2010/09/01)
Bugs fixed
......
ZOPEVERSION = 2.10.12-final
ZOPEVERSION = 2.10.13-final
ZOPEDIRNAME := Zope-$(ZOPEVERSION)
ZOPE_REQUIRED_FILES=tmp/$(ZOPEDIRNAME).tgz
......
ZOPE_MAJOR_VERSION = '2.10'
ZOPE_MINOR_VERSION = '12'
ZOPE_MINOR_VERSION = '13'
ZOPE_BRANCH_NAME = '$Name$'[6:] or 'no-branch'
# always start prerelease branches with '0' to avoid upgrade
......
......@@ -116,23 +116,21 @@ class DefaultPublishTraverse(object):
# Again, clear any error status created by __bobo_traverse__
# because we actually found something:
request.response.setStatus(200)
return subobject
except AttributeError:
pass
# Lastly we try with key access:
try:
subobject = object[name]
except TypeError: # unsubscriptable
raise KeyError(name)
if subobject is None:
try:
subobject = object[name]
except TypeError: # unsubscriptable
raise KeyError(name)
# Ensure that the object has a docstring, or that the parent
# object has a pseudo-docstring for the object. Objects that
# have an empty or missing docstring are not published.
doc = getattr(subobject, '__doc__', None)
if doc is None:
doc = getattr(object, '%s__doc__' % name, None)
if not doc:
raise Forbidden(
"The object at %s has an empty or missing " \
......
......@@ -166,6 +166,13 @@ class TestBaseRequest(unittest.TestCase):
r = self._makeOne(root)
self.assertRaises(NotFound, r.traverse, 'folder/objBasic/noview')
def test_traverse_acquired_attribute_without_docstring(self):
from ZPublisher import NotFound
root, folder = self._makeRootAndFolder()
root._setObject('objBasic', DummyObjectWithoutDocstring())
r = self._makeOne(root)
self.assertRaises(NotFound, r.traverse, 'folder/objBasic')
def test_traverse_class_without_docstring(self):
from ZPublisher import NotFound
root, folder = self._makeRootAndFolder()
......
......@@ -462,7 +462,7 @@ doclines = __doc__.split("\n")
setup(name='Zope',
author=AUTHOR,
version="2.10.7-dev",
version="2.10.13",
maintainer="Zope Corporation",
maintainer_email="zope-dev@zope.org",
url = "http://www.zope.org/",
......
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