From a8adf58cb6b629b22a38597c1cee2a858b2c70c8 Mon Sep 17 00:00:00 2001 From: Jan Mach <jan.mach@cesnet.cz> Date: Thu, 13 Jun 2019 15:05:58 +0200 Subject: [PATCH] Added support for dumping raw data structures as YAML. Some users may prefer viewing IDEA messages in YAML format, because it contains much less funny characters. --- conf/requirements-latest.pip | 1 + conf/requirements.pip | 1 + lib/hawat/app.py | 17 ++++++++++++++++- .../events/templates/events/show.html | 12 ++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/conf/requirements-latest.pip b/conf/requirements-latest.pip index 7c33f250b..b96fb953c 100644 --- a/conf/requirements-latest.pip +++ b/conf/requirements-latest.pip @@ -22,6 +22,7 @@ flask-debugtoolbar flask-jsglue geoip2 rrdtool +pyyaml pydgets pyzenkit pynspect diff --git a/conf/requirements.pip b/conf/requirements.pip index c721506a6..5504f528c 100644 --- a/conf/requirements.pip +++ b/conf/requirements.pip @@ -22,6 +22,7 @@ flask-debugtoolbar==0.10.1 flask-jsglue==0.3.1 geoip2==2.9.0 rrdtool==0.1.14 +pyyaml==5.1.1 pydgets==0.9 pyzenkit==0.54 pynspect==0.16 diff --git a/lib/hawat/app.py b/lib/hawat/app.py index 7f9aa2950..1db2a41d5 100644 --- a/lib/hawat/app.py +++ b/lib/hawat/app.py @@ -28,6 +28,7 @@ import os import copy import datetime import jinja2 +import yaml # # Flask related modules. @@ -432,6 +433,19 @@ def _setup_app_core(app): app.jinja_loader.get_source(app.jinja_env, filename)[0] ) + def json_to_yaml(json_data): + """ + Include given file in raw form directly into the generated content. + This may be usefull for example for including JavaScript files + directly into the HTML page. + """ + return yaml.dump( + yaml.load( + json_data + ), + default_flow_style=False + ) + return dict( get_endpoints_dict = get_endpoints_dict, get_endpoint_class = get_endpoint_class, @@ -458,7 +472,8 @@ def _setup_app_core(app): current_datetime_utc = datetime.datetime.utcnow(), - include_raw = include_raw + include_raw = include_raw, + json_to_yaml = json_to_yaml ) class HawatJSONEncoder(flask.json.JSONEncoder): diff --git a/lib/hawat/blueprints/events/templates/events/show.html b/lib/hawat/blueprints/events/templates/events/show.html index 841158285..6d7451eac 100644 --- a/lib/hawat/blueprints/events/templates/events/show.html +++ b/lib/hawat/blueprints/events/templates/events/show.html @@ -46,6 +46,11 @@ <strong>{{ gettext('Properties') }}</strong> </a> </li> + <li role="presentation"> + <a href="#tab-event-data-yaml" aria-controls="tab-event-data-yaml" role="tab" data-toggle="tab"> + <strong>{{ gettext('YAML data') }}</strong> + </a> + </li> <li role="presentation"> <a href="#tab-event-data-json" aria-controls="tab-event-data-json" role="tab" data-toggle="tab"> <strong>{{ gettext('JSON data') }}</strong> @@ -320,6 +325,13 @@ {%- endif %} </div> + <div role="tabpanel" class="tab-pane fade" id="tab-event-data-yaml"> + <br> +<pre> +{{ json_to_yaml(item.to_json(indent = 4, sort_keys = True)) }} +</pre> + </div> + <div role="tabpanel" class="tab-pane fade" id="tab-event-data-json"> <br> <pre> -- GitLab