diff options
author | jwansek <eddie.atten.ea29@gmail.com> | 2021-02-17 20:56:57 +0000 |
---|---|---|
committer | jwansek <eddie.atten.ea29@gmail.com> | 2021-02-17 20:56:57 +0000 |
commit | b076881a8e899c67767eb6c9640f1da68f2d3454 (patch) | |
tree | dddf53dd12a6b919596556a381650137ae3e1fab /app.py | |
parent | 58fecf855d151ef0459a43ab9af271a3a4922ad5 (diff) | |
download | boymoder.blog-b076881a8e899c67767eb6c9640f1da68f2d3454.tar.gz boymoder.blog-b076881a8e899c67767eb6c9640f1da68f2d3454.zip |
finised parser, finished rendering posts, finished sercving images
Diffstat (limited to 'app.py')
-rw-r--r-- | app.py | 72 |
1 files changed, 68 insertions, 4 deletions
@@ -1,8 +1,13 @@ +from PIL import Image import configparser import webbrowser +import datetime import database import services +import parser import flask +import os +import io app = flask.Flask(__name__) CONFIG = configparser.ConfigParser() @@ -11,7 +16,7 @@ CONFIG.read("edaweb.conf") def get_template_items(title, db): return { "links": db.get_header_links(), - "image": db.get_image("twitterpic"), + "image": db.get_pfp_image(), "title": title, "articles": db.get_header_articles() } @@ -45,14 +50,73 @@ def serve_services(): pihole = services.get_pihole_stats() ) +@app.route("/thought") +def get_thought(): + thought_id = flask.request.args.get("id", type=int) + with database.Database() as db: + category_name, title, dt, parsed = parser.get_thought_from_id(db, thought_id) + return flask.render_template_string( + parsed, + **get_template_items(title, db), + thought = True, + dt = "published: " + str(dt), + category = category_name, + othercategories = db.get_categories_not(category_name) + ) + +@app.route("/thoughts") +def get_thoughts(): + with database.Database() as db: + all_ = db.get_all_thoughts() + tree = {} + for id_, title, dt, category in all_: + if category not in tree.keys(): + tree[category] = [(id_, title, dt)] + else: + tree[category].append((id_, title, str(dt))) + + return flask.render_template( + "thoughts.html", + **get_template_items("thoughts", db), + tree = tree + ) + +@app.route("/img/<filename>") +def serve_image(filename): + imdirpath = os.path.join(".", "static", "images") + if filename in os.listdir(imdirpath): + try: + w = int(flask.request.args['w']) + h = int(flask.request.args['h']) + except (KeyError, ValueError): + return flask.send_from_directory(imdirpath, filename) + + img = Image.open(os.path.join(imdirpath, filename)) + img.thumbnail((w, h), Image.ANTIALIAS) + io_ = io.BytesIO() + img.save(io_, format='JPEG') + return flask.Response(io_.getvalue(), mimetype='image/jpeg') + + + + else: + flask.abort(404) + + @app.route("/preview") def preview(): - import os if "PREVIEW" in os.environ: with database.Database() as db: - return flask.render_template_string(os.environ["PREVIEW"], **get_template_items(os.environ["PREVIEW_TITLE"], db)) + return flask.render_template_string( + os.environ["PREVIEW"], + **get_template_items(os.environ["PREVIEW_TITLE"], db), + thought = True, + dt = "preview rendered: " + str(datetime.datetime.now()), + category = os.environ["CATEGORY"], + othercategories = db.get_categories_not(os.environ["CATEGORY"]) + ) else: - return "page for internal use only" + flask.abort(404) |