diff options
| author | Jacob McDonnell <jacob@simplelittledream.com> | 2023-05-03 13:13:47 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@simplelittledream.com> | 2023-05-03 13:13:47 -0400 |
| commit | 97a8370caea2fae4a0a67165036aae2dc2d05900 (patch) | |
| tree | eb3c80ce24a66d342e3ba4143e88d6893a5f49b2 /main.py | |
| parent | 79352a7fe3a64021b8c39db2a78a22cdd58abb1e (diff) | |
Rewrite of the website in Flask
Diffstat (limited to 'main.py')
| -rwxr-xr-x | main.py | 73 |
1 files changed, 73 insertions, 0 deletions
@@ -0,0 +1,73 @@ +from flask import Flask, render_template, send_file +from markdown import markdown +from db import DB + +app = Flask(__name__) +r = DB() + +@app.route('/') +def home(): + return render_template("template.html", body=markdown(read_file("static/home.md"))) + +@app.route('/articles/<site>/') +def load_article(site): + '''Capture a given article page and load it''' + article = r.get_article(site) + body = markdown(read_file(article["file"])) + return render_template("articletemplate.html", body=body) + +@app.route('/articles/<article>/img/<image>') +def get_article_images(article, image): + '''Capture a url for an image in an article and return the file''' + return send_file(f"static/articles/{article}/img/{image}", mimetype='image/png') + +@app.route('/articles/') +def articles_page(): + '''Render the main articles page''' + articles = sorted(r.get_all_articles(), reverse=True, key=lambda d: d['id']) + html = ['<div class="article">'] + for article in articles: + html.append(f'<a href="{article["url"]}"><h2>{article["title"]}</h2><p>{article["date"]}<br>{article["desc"]}</p>') + html.append("</div>") + return render_template("articletemplate.html", body="".join(html)) + +@app.route("/card") +def get_card(): + return send_file("static/business_card") + +@app.route("/rss.xml") +@app.route("/rss") +def get_rss(): + return send_file("static/rss.xml") + +@app.route('/css/<file>') +def get_css(file): + return send_file(f"static/css/{file}", mimetype='text/css') + +@app.route('/favicon.ico') +def get_favicon(): + return send_file("static/favicon.ico", mimetype='image/ico') + +@app.route('/robots.txt') +def get_robots(): + return send_file("static/robots.txt", mimetype='text/text') + +@app.route("/testpage") +def test_page(): + return render_template("template.html", body=read_file("static/testpage.html")) + +@app.errorhandler(404) +@app.errorhandler(500) +def page_not_found(e): + return render_template('template.html', body=markdown(read_file("static/404.md"))) + +def read_file(file): + '''Read a given html file and return string''' + file = open(file, "r") + body = file.read() + file.close() + return body + +if __name__ == "__main__": + app.run(host="0.0.0.0") + |
