diff options
| author | yuzu-eva <cafebabe@disroot.org> | 2025-03-11 00:20:43 +0100 |
|---|---|---|
| committer | yuzu-eva <cafebabe@disroot.org> | 2025-03-11 00:20:43 +0100 |
| commit | 1d1383ce943cf6b1ddb32b031a9c9a10e29f98fe (patch) | |
| tree | afd3bd4627ecfcfac6e16714eecb6e4516df7485 /app.py | |
| parent | 85f1c648e09e200a11ae442c8b284b24818f9239 (diff) | |
first iteration of flask-app; index is working
Diffstat (limited to 'app.py')
| -rwxr-xr-x | app.py | 84 |
1 files changed, 84 insertions, 0 deletions
@@ -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) |
