from flask import Flask, render_template, request, redirect, url_for from models import db, Song, Album app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///songs.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db.init_app(app) @app.before_request def before_request(): if not hasattr(app, 'db_initialized'): db.create_all() app.db_initialized = True @app.route('/') def index(): songs = Song.query.all() albums = Album.query.all() return render_template('index.html', songs=songs, albums=albums) @app.route('/song/') def song(song_id): song = Song.query.get_or_404(song_id) return render_template('song.html', song=song) @app.route('/add_song', methods=['GET', 'POST']) def add_song(): if request.method == 'POST': title = request.form['title'] author = request.form['author'] album_id = request.form['album_id'] lyrics = request.form['lyrics'] new_song = Song(title=title, author=author, album_id=album_id, lyrics=lyrics) db.session.add(new_song) db.session.commit() return redirect(url_for('index')) albums = Album.query.all() return render_template('add_song.html', albums=albums) @app.route('/add_album', methods=['GET', 'POST']) def add_album(): if request.method == 'POST': name = request.form['name'] artist = request.form['artist'] year = request.form['year'] new_album = Album(name=name, artist=artist, year=year) db.session.add(new_album) db.session.commit() return redirect(url_for('index')) return render_template('add_album.html') @app.route('/album/') def album(album_id): album = Album.query.get_or_404(album_id) songs = Song.query.filter_by(album_id=album_id).all() return render_template('album.html', album=album, songs=songs) if __name__ == '__main__': with app.app_context(): db.create_all() app.run(debug=True)