diff --git a/conf/requirements-latest.pip b/conf/requirements-latest.pip index 7c33f250be194bdeb69ea6bd9f04b08d6b1f4273..b96fb953c8b22c2fe3e7674405a214aec95a04fb 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 c721506a6d66d03ef5015fb535b503188cf85c2e..5504f528c80837790222230a9496941c29abfaaf 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 7f9aa29507a17f0581d464750f707513cfb01148..1db2a41d5e0f3e4fe656c3ae17b34f626b8e3fe9 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 8411582854866f62820bb3d56555e8ace548d7d7..6d7451eac446474cb049d7e270b63adff7b353d7 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>