From 64a1250cad7aeb0a294f0e68ae803aa35acc0ed4 Mon Sep 17 00:00:00 2001 From: tessier Date: Sat, 6 Jun 2020 19:07:34 +0900 Subject: [PATCH] Diagrams on web --- docker/docker-compose.yml | 6 ++ docker/web/Dockerfile | 19 ++++++ docker/web/app.py | 56 ++++++++++++++++++ docker/web/requirements.txt | 2 + docker/web/static/diagrams.png | Bin 0 -> 6876 bytes .../static/diagrams/grouped_workersぽぽ.png | Bin 0 -> 54809 bytes docker/web/static/favicon.ico | Bin 0 -> 370070 bytes docker/web/templates/builder.html | 6 ++ docker/web/templates/welcome.html | 3 + 9 files changed, 92 insertions(+) create mode 100644 docker/docker-compose.yml create mode 100644 docker/web/Dockerfile create mode 100644 docker/web/app.py create mode 100644 docker/web/requirements.txt create mode 100644 docker/web/static/diagrams.png create mode 100644 docker/web/static/diagrams/grouped_workersぽぽ.png create mode 100644 docker/web/static/favicon.ico create mode 100644 docker/web/templates/builder.html create mode 100644 docker/web/templates/welcome.html diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 00000000..60917eeb --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,6 @@ +version: "3" +services: + web: + build: ./web + ports: ["5000:5000"] + volumes: ['./web:/app'] diff --git a/docker/web/Dockerfile b/docker/web/Dockerfile new file mode 100644 index 00000000..4389cc5f --- /dev/null +++ b/docker/web/Dockerfile @@ -0,0 +1,19 @@ +FROM alpine:3.12 + +RUN apk update && apk add --no-cache \ + gcc libc-dev g++ graphviz python3 py-pip python3-dev ttf-opensans curl fontconfig + +COPY . /app +WORKDIR app + +RUN pip3 install -r requirements.txt + +# add fonts to support CJK languages +RUN curl -O https://noto-website.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip \ +&& mkdir -p /usr/share/fonts/NotoSansCJKjp \ +&& unzip NotoSansCJKjp-hinted.zip -d /usr/share/fonts/NotoSansCJKjp/ \ +&& rm NotoSansCJKjp-hinted.zip \ +&& fc-cache -fv + +ENTRYPOINT ["python3"] +CMD ["app.py"] diff --git a/docker/web/app.py b/docker/web/app.py new file mode 100644 index 00000000..32fc9420 --- /dev/null +++ b/docker/web/app.py @@ -0,0 +1,56 @@ +from flask import Flask, render_template + +app = Flask(__name__) + + +@app.route('/') +def welcome(): + """Top welcome page.""" + template = 'welcome.html' + + values = { + "aa": "bjc" + } + + return render_template(template, **values) + + +@app.route('/builder', methods=['POST', 'GET']) +def builder(): + """Builder page with python input.""" + import os + import subprocess + from flask import request + + template = 'builder.html' + values = {} + diag_folder = "static/diagrams/" + + code = request.form.get('code') + if code: + # clean the directory + _, _, filenames = next(os.walk(diag_folder)) + for one_file in filenames: + os.remove('%s%s' % (diag_folder, one_file)) + # write the code in a file and execute + with open("%stemp_code.py" % diag_folder, "w") as f: + f.write(code) + result = subprocess.run(["python3", "temp_code.py"], cwd=diag_folder, capture_output=True) + # TODO get the result if there's error to display on the template + print('stdout: ', result.stdout) + print('stderr: ', result.stderr) + # delete the temp file + os.remove("%stemp_code.py" % diag_folder) + # get the pic to display + _, _, filenames = next(os.walk(diag_folder)) + pic_name = filenames[0] + values.update({ + "code": code, + "pic_name": pic_name, + }) + + return render_template(template, **values) + + +if __name__ == '__main__': + app.run(debug=True, host='0.0.0.0') diff --git a/docker/web/requirements.txt b/docker/web/requirements.txt new file mode 100644 index 00000000..7809a40e --- /dev/null +++ b/docker/web/requirements.txt @@ -0,0 +1,2 @@ +diagrams +Flask diff --git a/docker/web/static/diagrams.png b/docker/web/static/diagrams.png new file mode 100644 index 0000000000000000000000000000000000000000..1e710e5bcb9389e9bbb13da801e4058ee2e3b1e8 GIT binary patch literal 6876 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 N=9z-`)g9fdWr+s`IqXG}V}a`C;bpfA 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 literal 0 HcmV?d00001 diff --git a/docker/web/static/favicon.ico b/docker/web/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c9f630329777dbda3f4fa41ba7ab1098712b13f2 GIT binary patch literal 370070 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 + + + + + diff --git a/docker/web/templates/welcome.html b/docker/web/templates/welcome.html new file mode 100644 index 00000000..65ea2f43 --- /dev/null +++ b/docker/web/templates/welcome.html @@ -0,0 +1,3 @@ +Diagrams + +You can use the builder Here