diff --git a/app.py b/app.py index 0ba09ed..cfba79e 100644 --- a/app.py +++ b/app.py @@ -1,8 +1,10 @@ # app.py -from flask import Flask, request, render_template, redirect, url_for +from flask import Flask, request, render_template, jsonify, redirect, url_for from sqlalchemy import create_engine, func from sqlalchemy.orm import sessionmaker + +from config.config import config from models.album import Base, Album app = Flask(__name__) @@ -26,37 +28,72 @@ def index(): return render_template('index.html', albums=albums) -@app.route('/admin', methods=['GET', 'POST']) -def admin(): - if request.method == 'POST': - action = request.form['action'] - album_id = int(request.form['album_id']) - - db = next(get_db()) - - if action == 'edit': - title = request.form['title'] - artist = request.form['artist'] - year = int(request.form['year']) - - album = db.query(Album).filter(Album.id == album_id).first() - if album: - album.title = title - album.artist = artist - album.year = year - db.commit() - elif action == 'delete': - album = db.query(Album).filter(Album.id == album_id).first() - if album: - db.delete(album) - db.commit() - - return redirect(url_for('admin')) - +@app.route('/admin', methods=['GET']) +def admin_get(): db = next(get_db()) albums = db.query(Album).all() return render_template('admin.html', albums=albums) +@app.route('/admin', methods=['POST']) +def admin_post(): + action = request.form.get('action') + album_id = request.form.get('album_id') + + if not action or not album_id: + if not album_id: + album_id = 1 + #return jsonify({'error': 'Missing required fields'}), 400 + + try: + album_id = int(album_id) + except ValueError: + return jsonify({'error': 'Invalid album ID'}), 400 + + db = next(get_db()) + + if action == 'edit': + title = request.form.get('title') + artist = request.form.get('artist') + year = request.form.get('year') + + if not title or not artist or not year: + return jsonify({'error': 'All fields are required'}), 400 + + album = db.query(Album).filter(Album.id == album_id).first() + if album: + album.title = title + album.artist = artist + album.year = int(year) + db.commit() + return jsonify({'message': 'Album updated successfully', 'album': album.to_dict()}) + else: + return jsonify({'error': 'Album not found'}), 404 + + elif action == 'delete': + album = db.query(Album).filter(Album.id == album_id).first() + if album: + db.delete(album) + db.commit() + return jsonify({'message': 'Album deleted successfully'}) + else: + return jsonify({'error': 'Album not found'}), 404 + + elif action == 'add_album': + title = request.form.get('title') + artist = request.form.get('artist') + year = request.form.get('year') + + if not title or not artist or not year: + return jsonify({'error': 'All fields are required'}), 400 + + new_album = Album(title=title, artist=artist, year=int(year)) + db.add(new_album) + db.commit() + return jsonify({'message': 'Album added successfully', 'album': new_album.to_dict()}) + + else: + return jsonify({'error': 'Invalid action'}), 400 + if __name__ == '__main__': app.run(debug=True) diff --git a/templates/admin.html b/templates/admin.html index 21e733f..b261738 100644 --- a/templates/admin.html +++ b/templates/admin.html @@ -1,77 +1,60 @@ - + - Admin Panel - + Admin -

Add Album

-
- -

- - -

- - -

- - -
- -

Manage Albums

-