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/browser/absoluteurl.py | |
parent | 64af3f227d61aac8471bc3e837886b96c647262c (diff) | |
download | zope-traversing-py36.tar.gz |
100% coverage. Minor whitespace cleanups.py36
Diffstat (limited to 'src/zope/traversing/browser/absoluteurl.py')
-rw-r--r-- | src/zope/traversing/browser/absoluteurl.py | 52 |
1 files changed, 32 insertions, 20 deletions
diff --git a/src/zope/traversing/browser/absoluteurl.py b/src/zope/traversing/browser/absoluteurl.py index a07f389..9b89d46 100644 --- a/src/zope/traversing/browser/absoluteurl.py +++ b/src/zope/traversing/browser/absoluteurl.py @@ -14,10 +14,15 @@ """Absolute URL View components """ try: - from urllib import quote as quote, unquote -except ImportError: from urllib.parse import quote_from_bytes as quote +except ImportError: + from urllib import quote + +try: from urllib.parse import unquote_to_bytes as unquote +except ImportError: + from urllib import unquote + import zope.component from zope.interface import implementer @@ -29,8 +34,8 @@ from zope.i18nmessageid import MessageFactory _ = MessageFactory('zope') _insufficientContext = _("There isn't enough context to get URL information. " - "This is probably due to a bug in setting up location " - "information.") + "This is probably due to a bug in setting up location " + "information.") _safe = '@+' # Characters that we don't want to have quoted @@ -38,13 +43,16 @@ _safe = '@+' # Characters that we don't want to have quoted def absoluteURL(ob, request): return zope.component.getMultiAdapter((ob, request), IAbsoluteURL)() - -@implementer(IAbsoluteURL) -class AbsoluteURL(BrowserView): +class _EncodedUnicode(object): def __unicode__(self): return unquote(self.__str__()).decode('utf-8') + +@implementer(IAbsoluteURL) +class AbsoluteURL(_EncodedUnicode, + BrowserView): + def __str__(self): context = self.context request = self.request @@ -102,26 +110,27 @@ class AbsoluteURL(BrowserView): return ({'name': '', 'url': self.request.getApplicationURL()}, ) base = tuple(zope.component.getMultiAdapter( - (container, request), IAbsoluteURL).breadcrumbs()) + (container, request), IAbsoluteURL).breadcrumbs()) name = getattr(context, '__name__', None) if name is None: raise TypeError(_insufficientContext) if name: - base += ({'name': name, - 'url': ("%s/%s" % (base[-1]['url'], - quote(name.encode('utf-8'), _safe))) - }, ) + base += ( + { + 'name': name, + 'url': ("%s/%s" % (base[-1]['url'], + quote(name.encode('utf-8'), _safe))) + }, + ) return base @implementer(IAbsoluteURL) -class SiteAbsoluteURL(BrowserView): - - def __unicode__(self): - return unquote(self.__str__()).decode('utf-8') +class SiteAbsoluteURL(_EncodedUnicode, + BrowserView): def __str__(self): context = self.context @@ -151,9 +160,12 @@ class SiteAbsoluteURL(BrowserView): name = getattr(context, '__name__', None) if name: - base += ({'name': name, - 'url': ("%s/%s" % (base[-1]['url'], - quote(name.encode('utf-8'), _safe))) - }, ) + base += ( + { + 'name': name, + 'url': ("%s/%s" % (base[-1]['url'], + quote(name.encode('utf-8'), _safe))) + }, + ) return base |