diff --git a/flask_debugtoolbar/__init__.py b/flask_debugtoolbar/__init__.py index 308f590..9a1cfad 100644 --- a/flask_debugtoolbar/__init__.py +++ b/flask_debugtoolbar/__init__.py @@ -8,6 +8,7 @@ from werkzeug.exceptions import HTTPException from werkzeug.urls import url_quote_plus from flask_debugtoolbar.toolbar import DebugToolbar +from flask_debugtoolbar.compat import iteritems from flask import Blueprint @@ -27,13 +28,9 @@ def replace_insensitive(string, target, replacement): def _printable(value): - if isinstance(value, unicode): - return value.encode('unicode_escape') - elif isinstance(value, str): - return value.encode('string_escape') try: return repr(value) - except Exception, e: + except Exception as e: return '' % ( object.__repr__(value), type(e).__name__, e) @@ -61,7 +58,7 @@ class DebugToolbarExtension(object): self.init_app(app) def init_app(self, app): - for k, v in self._default_config(app).iteritems(): + for k, v in iteritems(self._default_config(app)): app.config.setdefault(k, v) if not app.config['DEBUG_TB_ENABLED']: diff --git a/flask_debugtoolbar/compat.py b/flask_debugtoolbar/compat.py new file mode 100644 index 0000000..7db9953 --- /dev/null +++ b/flask_debugtoolbar/compat.py @@ -0,0 +1,9 @@ +import sys + +PY2 = sys.version_info[0] == 2 + + +if PY2: + iteritems = lambda d: d.iteritems() +else: + iteritems = lambda d: iter(d.items()) \ No newline at end of file diff --git a/flask_debugtoolbar/templates/panels/headers.html b/flask_debugtoolbar/templates/panels/headers.html index 2a1486c..2155ce5 100644 --- a/flask_debugtoolbar/templates/panels/headers.html +++ b/flask_debugtoolbar/templates/panels/headers.html @@ -6,7 +6,7 @@ - {% for key, value in headers.iteritems() %} + {% for key, value in headers|dictsort %} {{ key|escape }} {{ value|escape }} diff --git a/flask_debugtoolbar/toolbar.py b/flask_debugtoolbar/toolbar.py index 74e92dc..0d3a7aa 100644 --- a/flask_debugtoolbar/toolbar.py +++ b/flask_debugtoolbar/toolbar.py @@ -1,4 +1,7 @@ -import urllib +try: + from urllib.parse import unquote +except ImportError: + from urllib import unquote from flask import url_for, current_app from werkzeug.utils import import_string @@ -24,7 +27,7 @@ class DebugToolbar(object): Populate debug panels """ activated = self.request.cookies.get('fldt_active', '') - activated = urllib.unquote(activated).split(';') + activated = unquote(activated).split(';') for panel_path in current_app.config['DEBUG_TB_PANELS']: panel_class = self._import_panel(panel_path) @@ -54,7 +57,7 @@ class DebugToolbar(object): try: panel_class = import_string(path) - except ImportError, e: + except ImportError as e: current_app.logger.warning('Disabled %s due to ImportError: %s', path, e) panel_class = None