From d5cc6b0bb27c7f49e17ede75115397e7f4c74378 Mon Sep 17 00:00:00 2001 From: Brant Knudson Date: Mon, 30 Dec 2013 15:20:52 -0600 Subject: [PATCH] Generate JSON Generate JSON data so that tools can easily make use of the info that reviewday generates. A new reviewday.json file is generated that has data like { "generated": "2014-01-03 22:22:33", "projects": { "identity-api": { "https://review.openstack.org/#change,62961": { "owner": "Dolph Mathews", "score": 48, "cause": "No link", "feedback": { "lowest": 1, "highest": 1 }, "subject": "cleanup query_string documentation" }, ... (for each review uri) }, ... (for each project) } } Change-Id: Idabafdadb3237410fa866c78d429cf46317fb3fe --- reviewday/util.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/reviewday/util.py b/reviewday/util.py index 9cd2614..6c8dcd8 100644 --- a/reviewday/util.py +++ b/reviewday/util.py @@ -1,4 +1,6 @@ +import json import os +import tempfile import html_helper from Cheetah.Template import Template from distutils.dir_util import copy_tree @@ -10,6 +12,31 @@ def prep_out_dir(out_dir): copy_tree(report_files_dir, out_dir) +def _create_json(out_dir, name_space={}): + data = { + 'generated': name_space['dts'], + 'projects': {}, } + + projects = data['projects'] + + for project_name in name_space['projects']: + projects[project_name] = {} + + mps = name_space['projects'][project_name] + for mp in mps: + projects[project_name][mp.url] = { + 'score': mp.score, + 'cause': mp.cause, + 'subject': mp.subject, + 'owner': mp.owner_name, + 'feedback': {'lowest': mp.lowest_feedback, + 'highest': mp.highest_feedback, }, } + + with tempfile.NamedTemporaryFile(dir=out_dir, delete=False) as f: + json.dump(data, f, indent=2) + os.rename(f.name, os.path.join(out_dir, 'reviewday.json')) + + def create_report(out_dir, name_space={}): filename = os.path.join(os.path.dirname(__file__), 'report.html') report_text = open(filename).read() @@ -21,3 +48,5 @@ def create_report(out_dir, name_space={}): out_file = open(os.path.join(out_dir, 'index.html'), "w") out_file.write(str(t)) out_file.close() + + _create_json(out_dir, name_space=name_space)