point-and-click-continuous-deployment-with-cloud-run/app.py (33 lines of code) (raw):
from flask import Flask, render_template
from pathlib import Path
import jinja2
import frontmatter
import markdown2
import os
app = Flask(__name__, static_url_path='', static_folder='media')
ENTRIES_DIR = "_entries"
ENTRY_PATH = "/entry/"
def markdown(text):
return markdown2.markdown(text)
app.add_template_filter(markdown)
def get_entries():
entries = []
path = Path(ENTRIES_DIR).glob("*.md")
for f in path:
entry = frontmatter.load(f)
entry['url'] = ENTRY_PATH + Path(f).stem
entries.append(entry)
return entries
@app.route("/entry/<title>")
def entry(title):
f = Path(ENTRIES_DIR, f"{title}.md")
if f.exists():
return render_template("entry.html", entry=frontmatter.load(f))
else:
return render_template("404.html")
@app.route("/")
def home():
entries = get_entries()
return render_template("home.html", entries=entries)
if __name__ == "__main__":
app.run() #, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))