diff --git a/Makefile b/Makefile index d82d6c3..e5355da 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ export YEAR .PHONY: $(DATA_DIR)/results.xlsx $(DATA_DIR)/results.tsv -all: all-data copy-raw-data copy-massaged-data static charts profiling +all: all-data copy-raw-data massage charts profiling $(OUT_DIR): mkdir -p $(OUT_DIR) @@ -19,11 +19,8 @@ copy-raw-data: all-data $(OUT_DIR) cp $(DATA_DIR)/results.xlsx $(OUT_DIR)/raw.xlsx cp $(DATA_DIR)/results.tsv $(OUT_DIR)/raw.tsv -copy-massaged-data: all-data - python -m pulkka.copy_massaged_data - -static: all-data - python -m pulkka.massage_templates +massage: all-data + python -m pulkka.massage_outputs charts: all-data python -m pulkka.generate_charts diff --git a/pulkka/copy_massaged_data.py b/pulkka/copy_massaged_data.py deleted file mode 100644 index d2b3ca9..0000000 --- a/pulkka/copy_massaged_data.py +++ /dev/null @@ -1,19 +0,0 @@ -from pulkka.config import OUT_DIR -from pulkka.data_ingest import read_data - - -def main(): - df = read_data() - df.to_html(OUT_DIR / "data.html", index=False, na_rep="") - df.to_csv(OUT_DIR / "data.csv", index=False) - df.to_excel(OUT_DIR / "data.xlsx", index=False) - df.to_json( - OUT_DIR / "data.json", - orient="records", - date_format="iso", - force_ascii=False, - ) - - -if __name__ == "__main__": - main() diff --git a/pulkka/massage_outputs.py b/pulkka/massage_outputs.py new file mode 100644 index 0000000..37d17cc --- /dev/null +++ b/pulkka/massage_outputs.py @@ -0,0 +1,65 @@ +import datetime +import glob +import io +import os + +import jinja2 +import numpy +import pandas + +from pulkka.config import OUT_DIR, YEAR +from pulkka.data_ingest import read_data + +TEMPLATE_DIR = os.path.realpath("./template") + + +def write_massaged_files(env, df): + with open(OUT_DIR / 'data.html', 'w') as f: + with io.StringIO() as s: + df.to_html(s, index=False, na_rep="", border=0) + table_html = s.getvalue() + f.write(env.get_template('_table.html').render(table_html=table_html, body_class="table-body")) + df.to_csv(OUT_DIR / "data.csv", index=False) + df.to_excel(OUT_DIR / "data.xlsx", index=False) + df.to_json( + OUT_DIR / "data.json", + orient="records", + date_format="iso", + force_ascii=False, + ) + print("Wrote data files") + + +def render_statics(env): + for filename in glob.glob(os.path.join(TEMPLATE_DIR, "*.html")): + basename = os.path.relpath(filename, TEMPLATE_DIR) + if basename.startswith("_"): + continue + out_filename = OUT_DIR / basename + with open(filename, "r") as inf: + tpl: jinja2.Template = env.from_string(inf.read()) + content = tpl.render(body_class="static-body") + with open(out_filename, "w") as outf: + outf.write(content) + print(filename, "=>", out_filename) + + +def main(): + df = read_data() + env = jinja2.Environment( + autoescape=True, + loader=jinja2.FileSystemLoader(TEMPLATE_DIR), + ) + env.globals.update({ + "date": datetime.datetime.utcnow(), + "pd": pandas, + "np": numpy, + "df": df, + "year": YEAR, + }) + render_statics(env) + write_massaged_files(env, df) + + +if __name__ == "__main__": + main() diff --git a/pulkka/massage_templates.py b/pulkka/massage_templates.py deleted file mode 100644 index 9c61dc8..0000000 --- a/pulkka/massage_templates.py +++ /dev/null @@ -1,35 +0,0 @@ -import datetime -import glob -import os - -import jinja2 -import numpy -import pandas - -from pulkka.config import OUT_DIR, YEAR -from pulkka.data_ingest import read_data - - -def main(): - env = jinja2.Environment( - autoescape=True, - ) - data = { - "date": datetime.datetime.utcnow(), - "pd": pandas, - "np": numpy, - "df": read_data(), - "year": YEAR, - } - for filename in glob.glob("template/*"): - out_filename = OUT_DIR / os.path.relpath(filename, "template") - with open(filename, "r") as inf: - tpl: jinja2.Template = env.from_string(inf.read()) - content = tpl.render(data) - with open(out_filename, "w") as outf: - outf.write(content) - print(filename, "=>", out_filename) - - -if __name__ == "__main__": - main() diff --git a/template/_base.html b/template/_base.html new file mode 100644 index 0000000..10e997d --- /dev/null +++ b/template/_base.html @@ -0,0 +1,15 @@ + + +
+ + + + +