summaryrefslogtreecommitdiff
path: root/app.py
diff options
context:
space:
mode:
authoryuzu-eva <cafebabe@disroot.org>2025-03-11 00:20:43 +0100
committeryuzu-eva <cafebabe@disroot.org>2025-03-11 00:20:43 +0100
commit1d1383ce943cf6b1ddb32b031a9c9a10e29f98fe (patch)
treeafd3bd4627ecfcfac6e16714eecb6e4516df7485 /app.py
parent85f1c648e09e200a11ae442c8b284b24818f9239 (diff)
first iteration of flask-app; index is working
Diffstat (limited to 'app.py')
-rwxr-xr-xapp.py84
1 files changed, 84 insertions, 0 deletions
diff --git a/app.py b/app.py
new file mode 100755
index 0000000..33082fc
--- /dev/null
+++ b/app.py
@@ -0,0 +1,84 @@
+from paste.translogger import TransLogger
+from waitress import serve
+
+import datetime
+import database
+import urllib
+import parser
+import flask
+import sys
+import os
+
+app = flask.Flask(__name__)
+
+def get_correct_article_headers(db:database.Database, title):
+ db_headers = list(db.get_header_links())
+ if title in [i[0] for i in db_headers]:
+ out = []
+ for i in db_headers:
+ if i != title:
+ out.append(i)
+ return out + [("index", "/~")]
+ else:
+ return db_headers + [("index", "/~")]
+
+def get_template_items(title, db):
+ return {
+ "links": db.get_header_links(),
+ "title": title,
+ "articles": get_correct_article_headers(db, title)
+ }
+
+@app.route("/")
+@app.route("/~")
+def index():
+ with database.Database() as db:
+ with open(os.path.join("static", "index.md"), "r") as f:
+ return flask.render_template(
+ "index.html.j2",
+ **get_template_items("eva's site", db),
+ markdown = parser.parse_text(f.read())[0]
+ )
+
+@app.route("/robots.txt")
+def robots():
+ return flask.send_from_directory("static", "robots.txt")
+
+@app.route("/thoughts")
+def get_thoughts():
+ with database.Database() as db:
+ all_ = db.get_all_thoughts()
+ return flask.render_template(
+ "thoughts.html.j2",
+ **get_template_items("thoughts", db),
+ )
+
+@app.route("/thought")
+def get_thought():
+ thought_id = flask.request.args.get("id", type=int)
+ with database.Database() as db:
+ try:
+ title, datetime, parsed, headers, redirect = parser.get_thought_from_id(db. thought_id)
+ except TypeError:
+ flask.abort(404)
+ return
+
+ if redirect is not None:
+ return flask.redirect(redirect, code = 301)
+
+ return flask.render_template(
+ "thought.html.j2",
+ **get_template_items(title, db),
+ md_html = parsed,
+ contents_html = headers,
+ datetime = "published: " + str(datetime)
+ )
+
+if __name__ == "__main__":
+ try:
+ if sys.argv[1] == "--production":
+ serve(TransLogger(app), host='0.0.0.0', port = 6969)
+ else:
+ app.run(host = "0.0.0.0", port = 5001, debug = True)
+ except IndexError:
+ app.run(host = "0.0.0.0", port = 5001, debug = True)