diff --git a/.gitignore b/.gitignore index 659603f..3030faa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ *.py[cod] -*.html out diff --git a/Makefile b/Makefile index 144d035..792409d 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,13 @@ .PHONY: data/results.xlsx data/results.tsv -all: data/results.xlsx data/results.tsv +out: all-data + python massage_templates.py + python copy_massaged_data.py + python generate_charts.py + cp data/results.xlsx out/raw.xlsx + cp data/results.tsv out/raw.tsv + +all-data: data/results.xlsx data/results.tsv data/results.xlsx: curl -fsSL -o $@ "https://docs.google.com/spreadsheets/d/1l-Zgf1HqaFGd8gRA8kQzaxJ3R7eJy29ORUS8pr5o0nk/export?format=xlsx" diff --git a/copy_massaged_data.py b/copy_massaged_data.py new file mode 100644 index 0000000..fa6fd43 --- /dev/null +++ b/copy_massaged_data.py @@ -0,0 +1,12 @@ +from data_ingest import read_data + + +def main(): + df = read_data() + df.to_html("out/data.html") + df.to_csv("out/data.csv") + df.to_excel("out/data.xlsx") + + +if __name__ == "__main__": + main() diff --git a/massage_templates.py b/massage_templates.py new file mode 100644 index 0000000..304da4a --- /dev/null +++ b/massage_templates.py @@ -0,0 +1,26 @@ +import datetime +import glob +import os + +import jinja2 + + +def main(): + env = jinja2.Environment( + autoescape=True, + ) + data = { + "date": datetime.datetime.utcnow(), + } + for filename in glob.glob("template/*"): + out_filename = os.path.join("out", 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/requirements.in b/requirements.in index bcdbad7..32288aa 100644 --- a/requirements.in +++ b/requirements.in @@ -1,3 +1,4 @@ bokeh +jinja2 openpyxl pandas diff --git a/requirements.txt b/requirements.txt index 4dbc7ae..7c25a3f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,7 +11,9 @@ et-xmlfile==1.0.1 jdcal==1.4.1 # via openpyxl jinja2==2.11.3 - # via bokeh + # via + # -r requirements.in + # bokeh markupsafe==1.1.1 # via jinja2 numpy==1.20.1 diff --git a/template/index.html b/template/index.html new file mode 100644 index 0000000..948a7b9 --- /dev/null +++ b/template/index.html @@ -0,0 +1,25 @@ + + + + + + + + Koodiklinikan palkkakysely + + +

Koodiklinikan palkkakysely

+ + + + diff --git a/template/style.css b/template/style.css new file mode 100644 index 0000000..78f7862 --- /dev/null +++ b/template/style.css @@ -0,0 +1,25 @@ +body { + max-width: 650px; + margin: 40px auto; + padding: 0 10px; + font: 18px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} + +h1, h2, h3 { + line-height: 1.2 +} + +@media (prefers-color-scheme: dark) { + body { + color: white; + background: #444 + } + + a:link { + color: #5bf + } + + a:visited { + color: #ccf + } +}