From df46e34049e651fae07108d715656ce9f2547b8e Mon Sep 17 00:00:00 2001 From: Effie Date: Tue, 6 Jun 2023 18:46:12 +1000 Subject: [PATCH] adds a placeholder header and footer --- app.py | 84 +++++++++++++++++++++++++++++++++++-- build_db.py | 8 +++- db.sql | 7 +++- reference_clips.ods | Bin 24699 -> 24706 bytes static/style.css | 0 templates/album.jinja | 6 +-- templates/base.jinja | 9 ++-- templates/home.jinja | 12 ++++++ templates/motif.jinja | 4 +- templates/motifindex.jinja | 22 ++++++++++ templates/nav.jinja | 14 ++++--- templates/song.jinja | 10 ++--- templates/songindex.jinja | 15 +++++++ 13 files changed, 168 insertions(+), 23 deletions(-) create mode 100644 static/style.css create mode 100644 templates/home.jinja create mode 100644 templates/motifindex.jinja create mode 100644 templates/songindex.jinja diff --git a/app.py b/app.py index bbdc625..b60900f 100644 --- a/app.py +++ b/app.py @@ -5,14 +5,92 @@ app = flask.Flask('songbook') # BLANK PAGE -# @app.route('/album/') -# def page(id): +# @app.route('/') +# def page(): # db = sqlite3.connect("file:songbook.sqlite?mode=ro", uri=True) -# return flask.render_template('motif.jinja', +# return flask.render_template('.jinja', # ) +# HOMEPAGE + +@app.route('/') +def homepage(): + + + + return flask.render_template('home.jinja') + +# SONG INDEX + +@app.route('/song') +def song_redirect(): + return flask.redirect("/index", code=308) + +@app.route('/index') +def songindex(): + + db = sqlite3.connect("file:songbook.sqlite?mode=ro", uri=True) + + album_info = db.execute(''' + select + id, name, date + from + album + order by + id + ''').fetchall() + + song_info = db.execute(''' + select + song_id, album_id, track, song.name, song.name_jp + from + song_album + join + song + on + song_album.song_id=song.id + order by + album_id, + track + ''').fetchall() + + return flask.render_template('songindex.jinja', + album_info=album_info, + song_info=song_info + ) + +# MOTIF INDEX + +@app.route('/motif') +def motifindex(): + + db = sqlite3.connect("file:songbook.sqlite?mode=ro", uri=True) + + category_info = db.execute(''' + select + id, name + from + category + order by + id + ''').fetchall() + + motif_info = db.execute(''' + select + id, name, category + from + motif + order by + id + ''').fetchall() + + return flask.render_template('motifindex.jinja', + category_info = category_info, + motif_info = motif_info + ) + # ALBUM PAGES @app.route('/album/') diff --git a/build_db.py b/build_db.py index 517b43d..dc0951c 100644 --- a/build_db.py +++ b/build_db.py @@ -39,7 +39,7 @@ cur.executemany( # import motif cur.executemany( - 'insert into motif(id,name,type) values(?, ?, ?)', + 'insert into motif(id,name,category) values(?, ?, ?)', ((row[0],row[1],'' if len(row)<3 else row[2]) for row in clipdata['Motif'][1:]) ) @@ -49,6 +49,12 @@ cur.executemany( ((row[0],row[1],row[2],row[3],0 if len(row)<5 else row[4]) for row in clipdata['Clip'][1:]) ) +# import category +cur.executemany( + 'insert into category(id,name) values (?, ?)', + clipdata['Category'][1:] +) + # import song x album cur.executemany( "insert into song_album(song_id,album_id,track) values (?, ?, ?)", diff --git a/db.sql b/db.sql index f636c68..ccf6219 100644 --- a/db.sql +++ b/db.sql @@ -32,7 +32,12 @@ create table credit( create table motif( id int primary key, name text not null, - type int not null + category int not null +); + +create table category( + id int primary key, + name text not null ); create table clip( diff --git a/reference_clips.ods b/reference_clips.ods index 0b3983c0714c14657aa3d26089898332bfb73c3d..69fca46a52b941cf2e31bfb99a1f6747620e917b 100644 GIT binary patch delta 8093 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 delta 8160 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 E5Bo{C5C8xG diff --git a/static/style.css b/static/style.css new file mode 100644 index 0000000..e69de29 diff --git a/templates/album.jinja b/templates/album.jinja index a25df5a..c6bb87a 100644 --- a/templates/album.jinja +++ b/templates/album.jinja @@ -1,4 +1,4 @@ -{% extends "base.jinja" %} +{% extends "nav.jinja" %} {% block title %}{{ album_info[0] }}{% endblock %} {% block content %} @@ -8,8 +8,8 @@ diff --git a/templates/base.jinja b/templates/base.jinja index 0f422f8..39999e7 100644 --- a/templates/base.jinja +++ b/templates/base.jinja @@ -1,13 +1,16 @@ + {% block title %}{% endblock %} - Eorzea Songbook - - + + + + - {% block content %}{% endblock %} + {% block basecontent %}{% endblock %} diff --git a/templates/home.jinja b/templates/home.jinja new file mode 100644 index 0000000..8c27b95 --- /dev/null +++ b/templates/home.jinja @@ -0,0 +1,12 @@ +{% extends "base.jinja" %} +{% block title %}Home{% endblock %} + +{% block basecontent %} + +

The Eorzea Songbook

+ +View Songs + +View Motifs + +{% endblock %} \ No newline at end of file diff --git a/templates/motif.jinja b/templates/motif.jinja index 8f67cbe..e592fc7 100644 --- a/templates/motif.jinja +++ b/templates/motif.jinja @@ -1,4 +1,4 @@ -{% extends "base.jinja" %} +{% extends "nav.jinja" %} {% block title %}{{ name }}{% endblock %} @@ -13,7 +13,7 @@
  • {{ song }}
  • diff --git a/templates/motifindex.jinja b/templates/motifindex.jinja new file mode 100644 index 0000000..c865406 --- /dev/null +++ b/templates/motifindex.jinja @@ -0,0 +1,22 @@ +{% extends "nav.jinja" %} +{% block title %}Motif Index{% endblock %} + +{% block content %} + +{% for category_id, name in category_info %} +

    {{ name }}

    +
      + {% for motif_id, motif, category in motif_info if category == category_id %} +
    • {{ motif }}
    • + {% endfor %} +
    +{% endfor %} + +

    Misc.

    +
      +{% for motif_id, motif, category in motif_info if category == '' %} +
    • {{ motif }}
    • +{% endfor %} +
    + +{% endblock %} \ No newline at end of file diff --git a/templates/nav.jinja b/templates/nav.jinja index 232375e..044fe5b 100644 --- a/templates/nav.jinja +++ b/templates/nav.jinja @@ -1,14 +1,18 @@ -{ % extends "base.jinja" % } +{% extends "base.jinja" %} -{ % block content % } +{% block basecontent %}
    - +

    The header will be in here. For now, click here to go back to the home page.

    -{ % block basecontent % }{ % endblock % } +{% block content %}{% endblock %} +
    +

    The footer will be in here, when it's ready.

    -{ % endblock content %} \ No newline at end of file +
    + +{% endblock basecontent %} \ No newline at end of file diff --git a/templates/song.jinja b/templates/song.jinja index 0a88605..243c2d5 100644 --- a/templates/song.jinja +++ b/templates/song.jinja @@ -1,4 +1,4 @@ -{% extends "base.jinja" %} +{% extends "nav.jinja" %} {% block title %}{{ name }}{% endblock %} {% block content %} @@ -18,8 +18,8 @@

    Album:

      -{% for id, track, album_name, album_code in album_info %} -
    • {{ album_name }} #{{ track }}
    • +{% for album_id, track, album_name, album_code in album_info %} +
    • {{ album_name }} #{{ track }}
    • {% endfor %}
    @@ -31,9 +31,9 @@
  • - {{ motif }} + {{ motif }}
  • {% endfor %} diff --git a/templates/songindex.jinja b/templates/songindex.jinja new file mode 100644 index 0000000..2467ffe --- /dev/null +++ b/templates/songindex.jinja @@ -0,0 +1,15 @@ +{% extends "nav.jinja" %} +{% block title %}Song Index{% endblock %} + +{% block content %} + +{% for album_id, name, date in album_info %} +

    {{ name }}

    + +{% endfor %} + +{% endblock %} \ No newline at end of file