"""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//") 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")