計算機科学のブログ

ほしい物リスト

Python - Flask - Building a Webapp: Web Development - template

Head First Python: A Learner’s Guide to the Fundamentals of Python Programming, A Brain-Friendly GuidePaul Barry(著)、 O’Reilly Mediaの Chapter 7.(Building a Webapp: Web Development)、SHARPEN YOUR PENCIL(368/682)の解答を求めてみる。

コード

webapp/app.py

import os

from flask import Flask, render_template, session

import swimclub

app = Flask(__name__)
app.secret_key = 'seceret_key'


def populate_data():
    if 'swimmers' not in session:
        swim_files = os.listdir(swimclub.FOLDER)
        swim_files.remove('.DS_Store')
        session['swimmers'] = {}
        for filename in swim_files:
            name, *_ = swimclub.read_swim_data(filename)
            if name not in session['swimmers']:
                session['swimmers'][name] = []
            session['swimmers'][name].append(filename)


@app.get('/')
def index():
    return render_template(
        'index.html.j2',
        itle='Welcome to the Swimclub system',
    )


@app.get('/swimmers')
def display_swimmers():
    populate_data()
    return render_template(
        'select.html.j2',
        title='Select a swimmer',
        url='/showfiles',
        select_id='swimmer',
        data=sorted(session['swimmers']),
    )


@app.get('/files/<swimmer>')
def get_swimmers_files(swimmer):
    populate_data()
    return session['swimmers'][swimmer]


if __name__ == '__main__':
    app.run()