web app added
diff --git a/web_app/__init__.py b/web_app/__init__.py
new file mode 100644
index 0000000..45e6180
--- /dev/null
+++ b/web_app/__init__.py
@@ -0,0 +1,88 @@
+from flask import Flask, render_template, url_for, request, g
+from flask_bootstrap import Bootstrap
+import json
+import os.path
+from storage_api import create_storage
+
+app = Flask(__name__)
+Bootstrap(app)
+
+
+def collect_tests():
+ result = []
+
+ for file in os.listdir("../test_results"):
+ if file.endswith(".json"):
+ result.append(file.split('.')[0])
+
+ return result
+
+
+def load_test(test_name):
+ test_name += '.json'
+
+ with open("../" + test_name, 'rt') as f:
+ raw = f.read()
+
+ if raw == '':
+ raise Exception("Test is emoty")
+
+ test = json.loads(raw)
+
+ return test
+
+
+@app.route("/", methods=['GET', 'POST'])
+def index():
+ data = []
+ for test in collect_tests():
+ d = {}
+ d["name"] = test
+ d["url"] = url_for("render_test", test_name=test)
+ data.append(d)
+
+ return render_template("index.html", tests=data)
+
+
+@app.route("/tests/<test_name>", methods=['GET'])
+def render_test(test_name):
+ tests = load_test(test_name)
+ header_keys = ['build_id', 'iso_md5', 'type']
+ table = []
+
+ if len(tests) > 0:
+ sorted_keys = sorted(tests[0].keys())
+
+ for key in sorted_keys:
+ if key not in header_keys:
+ header_keys.append(key)
+
+ for test in tests:
+ row = []
+
+ for header in header_keys:
+ if isinstance(test[header], list):
+ row.append(str(test[header][0]) + unichr(0x00B1) + str(test[header][1]))
+ else:
+ row.append(test[header])
+
+ table.append(row)
+
+ return render_template("table.html", headers=header_keys, table=table)
+
+
+@app.route("/tests/<test_name>", methods=['POST'])
+def add_test(test_name):
+ tests = json.loads(request.data)
+
+ if not hasattr(g, "storage"):
+ g.storage = create_storage("file:///home/gstepanov/rally-results-processor/test_results/sample.json", "", "")
+
+ for test in tests:
+ g.storage.store(test)
+ return "Created", 201
+
+
+
+if __name__ == "__main__":
+ app.run(debug=True)
\ No newline at end of file