aboutsummaryrefslogtreecommitdiffstats
path: root/app.py
diff options
context:
space:
mode:
authorjwansek <eddie.atten.ea29@gmail.com>2021-02-17 20:56:57 +0000
committerjwansek <eddie.atten.ea29@gmail.com>2021-02-17 20:56:57 +0000
commitb076881a8e899c67767eb6c9640f1da68f2d3454 (patch)
treedddf53dd12a6b919596556a381650137ae3e1fab /app.py
parent58fecf855d151ef0459a43ab9af271a3a4922ad5 (diff)
downloadboymoder.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.py72
1 files changed, 68 insertions, 4 deletions
diff --git a/app.py b/app.py
index e100689..24a6c64 100644
--- a/app.py
+++ b/app.py
@@ -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)