73 lines
1.8 KiB
Python
73 lines
1.8 KiB
Python
"""Flask server."""
|
|
|
|
from csv import DictReader
|
|
from os import listdir
|
|
from os.path import basename, dirname
|
|
from pathlib import Path
|
|
|
|
from flask import Flask, abort, render_template
|
|
from ruamel.yaml import YAML
|
|
|
|
app = Flask(__name__)
|
|
cwd = dirname(Path(__file__).absolute())
|
|
yaml = YAML()
|
|
|
|
|
|
def get_programmes():
|
|
programmes = []
|
|
path = cwd / Path("static/programmes/")
|
|
for file in listdir(path):
|
|
with open(path / file, "r") as handle:
|
|
contents = handle.read()
|
|
loaded = yaml.load(contents)
|
|
programmes.append(loaded)
|
|
return programmes
|
|
|
|
|
|
def get_collection():
|
|
collection = []
|
|
path = cwd / Path("static/csv/collection.csv")
|
|
with open(path, "r") as handle:
|
|
reader = DictReader(handle)
|
|
for row in reader:
|
|
collection.append(row)
|
|
return collection
|
|
|
|
|
|
@app.route("/")
|
|
def about():
|
|
return render_template("about.html")
|
|
|
|
|
|
@app.route("/programmes")
|
|
def programmes():
|
|
programmes = get_programmes()
|
|
return render_template("programmes.html", programmes=programmes)
|
|
|
|
|
|
@app.route("/programme/<name>/")
|
|
def programme(name):
|
|
cleaned_name = name.replace("-", " ").lower()
|
|
programmes = get_programmes()
|
|
for programme in programmes:
|
|
cleaned_programme = programme.get("title", "").lower()
|
|
if cleaned_name == cleaned_programme:
|
|
return render_template("programme.html", programme=programme)
|
|
abort(404, description="Programme not found")
|
|
|
|
|
|
@app.route("/collection")
|
|
def collection():
|
|
collection = get_collection()
|
|
return render_template("collection.html", collection=collection)
|
|
|
|
|
|
@app.route("/glossary")
|
|
def glossary():
|
|
return render_template("glossary.html")
|
|
|
|
|
|
@app.route("/participate")
|
|
def participate():
|
|
return render_template("participate.html")
|