diff options
author | Jason Madden <jamadden@gmail.com> | 2017-08-25 10:01:03 -0500 |
---|---|---|
committer | Jason Madden <jamadden@gmail.com> | 2017-08-25 11:44:15 -0500 |
commit | c5b04ca74abb72b3399730e670e7442f21283d3a (patch) | |
tree | 6c3c534907cce0e55d173040c25cf8f388ebcf3c /src/zope/traversing/namespace.py | |
parent | 64af3f227d61aac8471bc3e837886b96c647262c (diff) | |
download | zope-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.py | 54 |
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 |