summaryrefslogtreecommitdiff
path: root/src/zope/traversing/namespace.py
diff options
context:
space:
mode:
authorJason Madden <jamadden@gmail.com>2017-08-25 10:01:03 -0500
committerJason Madden <jamadden@gmail.com>2017-08-25 11:44:15 -0500
commitc5b04ca74abb72b3399730e670e7442f21283d3a (patch)
tree6c3c534907cce0e55d173040c25cf8f388ebcf3c /src/zope/traversing/namespace.py
parent64af3f227d61aac8471bc3e837886b96c647262c (diff)
downloadzope-traversing-py36.tar.gz
100% coverage. Minor whitespace cleanups.py36
Diffstat (limited to 'src/zope/traversing/namespace.py')
-rw-r--r--src/zope/traversing/namespace.py54
1 files changed, 33 insertions, 21 deletions
diff --git a/src/zope/traversing/namespace.py b/src/zope/traversing/namespace.py
index 68b17cf..7ef07a4 100644
--- a/src/zope/traversing/namespace.py
+++ b/src/zope/traversing/namespace.py
@@ -376,9 +376,6 @@ class vh(view):
request = self.request
- traversal_stack = request.getTraversalStack()
- app_names = []
-
if not six.PY3:
# `name` comes in as unicode, we need to make it a string
# so absolute URLs don't all become unicode.
@@ -393,6 +390,9 @@ class vh(view):
request.setApplicationServer(host, proto, port)
+ traversal_stack = request.getTraversalStack()
+ app_names = []
+
if '++' in traversal_stack:
segment = traversal_stack.pop()
while segment != '++':
@@ -455,6 +455,8 @@ class adapter(SimpleHandler):
class debug(view):
+ enable_debug = __debug__
+
def traverse(self, name, ignored):
"""Debug traversal adapter
@@ -516,27 +518,37 @@ class debug(view):
... print('unknown debugging flag')
unknown debugging flag
+ Of course, if Python was started with the ``-O`` flag to
+ disable debugging, none of this is allowed (we simulate this
+ with a private setting on the instance):
+
+ >>> adapter.enable_debug = False
+ >>> adapter.traverse('source', ())
+ Traceback (most recent call last):
+ ...
+ ValueError: Debug flags only allowed in debug mode
+
"""
- if __debug__:
- request = self.request
- for flag in name.split(','):
- if flag == 'source':
- request.debug.sourceAnnotations = True
- elif flag == 'tal':
- request.debug.showTAL = True
- elif flag == 'errors':
- # TODO: I am not sure this is the best solution. What
- # if we want to enable tracebacks when also trying to
- # debug a different skin?
- skin = zope.component.getUtility(IBrowserSkinType, 'Debug')
- directlyProvides(request, providedBy(request) + skin)
- else:
- raise ValueError("Unknown debug flag: %s" % flag)
- return self.context
- else:
+ if not self.enable_debug or not __debug__:
raise ValueError("Debug flags only allowed in debug mode")
- if not __debug__:
+ request = self.request
+ for flag in name.split(','):
+ if flag == 'source':
+ request.debug.sourceAnnotations = True
+ elif flag == 'tal':
+ request.debug.showTAL = True
+ elif flag == 'errors':
+ # TODO: I am not sure this is the best solution. What
+ # if we want to enable tracebacks when also trying to
+ # debug a different skin?
+ skin = zope.component.getUtility(IBrowserSkinType, 'Debug')
+ directlyProvides(request, providedBy(request) + skin)
+ else:
+ raise ValueError("Unknown debug flag: %s" % flag)
+ return self.context
+
+ if not __debug__: # pragma: no cover
# If not in debug mode, we should get an error:
traverse.__doc__ = """Disabled debug traversal adapter