diff --git a/puppetboard/app.py b/puppetboard/app.py index 7dab122..a00a366 100644 --- a/puppetboard/app.py +++ b/puppetboard/app.py @@ -18,7 +18,7 @@ from pypuppetdb import connect from puppetboard.forms import QueryForm from puppetboard.utils import ( get_or_abort, yield_or_stop, - ten_reports, + ten_reports, jsonprint ) @@ -27,6 +27,8 @@ app.config.from_object('puppetboard.default_settings') app.config.from_envvar('PUPPETBOARD_SETTINGS', silent=True) app.secret_key = os.urandom(24) +app.jinja_env.filters['jsonprint'] = jsonprint + puppetdb = connect( api_version=3, host=app.config['PUPPETDB_HOST'], diff --git a/puppetboard/templates/metric.html b/puppetboard/templates/metric.html index 8b907d4..0e8c250 100644 --- a/puppetboard/templates/metric.html +++ b/puppetboard/templates/metric.html @@ -11,7 +11,11 @@ {% for key,value in metric %} {{key}} - {{value}} + {% if value is mapping %} +
{{value|jsonprint}}
+ {% else %} + {{value}} + {% endif %} {% endfor %} diff --git a/puppetboard/templates/query.html b/puppetboard/templates/query.html index 072fecf..dfbe4f0 100644 --- a/puppetboard/templates/query.html +++ b/puppetboard/templates/query.html @@ -53,7 +53,7 @@

Result

-
{{ result|tojson|replace(", ", ",\n") }}
+
{{result|jsonprint}}
{% endif %} diff --git a/puppetboard/utils.py b/puppetboard/utils.py index 8ac63f5..03ecb85 100644 --- a/puppetboard/utils.py +++ b/puppetboard/utils.py @@ -1,11 +1,16 @@ from __future__ import absolute_import from __future__ import unicode_literals +import json + from requests.exceptions import HTTPError, ConnectionError from pypuppetdb.errors import EmptyResponseError from flask import abort +def jsonprint(value): + return json.dumps(value, indent=2, separators=(',', ': ') ) + def get_or_abort(func, *args, **kwargs): """Execute the function with its arguments and handle the possible