From 6352aff937862d13ce9a258417c48cfc2d4d565f Mon Sep 17 00:00:00 2001 From: christophermullins Date: Fri, 30 May 2025 14:20:55 -0700 Subject: [PATCH] Basic QWEN2.5-Coder initial build. --- .idea/Collector.iml | 10 +++ .../inspectionProfiles/profiles_settings.xml | 6 ++ .idea/modules.xml | 8 ++ .idea/vcs.xml | 6 ++ .idea/workspace.xml | 80 +++++++++++++++++++ app.py | 62 ++++++++++++++ config/config.py | 8 ++ models/album.py | 15 ++++ templates/admin.html | 77 ++++++++++++++++++ templates/index.html | 39 +++++++++ 10 files changed, 311 insertions(+) create mode 100644 .idea/Collector.iml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 app.py create mode 100644 config/config.py create mode 100644 models/album.py create mode 100644 templates/admin.html create mode 100644 templates/index.html diff --git a/.idea/Collector.iml b/.idea/Collector.iml new file mode 100644 index 0000000..03c2a40 --- /dev/null +++ b/.idea/Collector.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..b90067f --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..8f7c78d --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1748636903987 + + + + + + \ No newline at end of file diff --git a/app.py b/app.py new file mode 100644 index 0000000..0ba09ed --- /dev/null +++ b/app.py @@ -0,0 +1,62 @@ +# app.py + +from flask import Flask, request, render_template, redirect, url_for +from sqlalchemy import create_engine, func +from sqlalchemy.orm import sessionmaker +from models.album import Base, Album + +app = Flask(__name__) +engine = create_engine(config['DB_URL']) +SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) +Base.metadata.create_all(bind=engine) + + +def get_db(): + db = SessionLocal() + try: + yield db + finally: + db.close() + + +@app.route('/') +def index(): + db = next(get_db()) + albums = db.query(Album).all() + 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')) + + db = next(get_db()) + albums = db.query(Album).all() + return render_template('admin.html', albums=albums) + + +if __name__ == '__main__': + app.run(debug=True) diff --git a/config/config.py b/config/config.py new file mode 100644 index 0000000..f12b590 --- /dev/null +++ b/config/config.py @@ -0,0 +1,8 @@ +# config/config.py + +from typing import Dict + +config: Dict[str, str] = { + "DB_URL": "mysql+pymysql://username:password@hostname/database", + "ADMIN_PASSWORD": "admin_password" +} diff --git a/models/album.py b/models/album.py new file mode 100644 index 0000000..fd7143d --- /dev/null +++ b/models/album.py @@ -0,0 +1,15 @@ +# models/album.py + +from sqlalchemy import Column, Integer, String +from sqlalchemy.ext.declarative import declarative_base + +Base = declarative_base() + + +class Album(Base): + __tablename__ = 'albums' + + id = Column(Integer, primary_key=True) + title = Column(String(255), nullable=False) + artist = Column(String(255), nullable=False) + year = Column(Integer, nullable=False) diff --git a/templates/admin.html b/templates/admin.html new file mode 100644 index 0000000..21e733f --- /dev/null +++ b/templates/admin.html @@ -0,0 +1,77 @@ + + + + + + + Admin Panel + + + +

Add Album

+
+ +

+ + +

+ + +

+ + +
+ +

Manage Albums

+ + + diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..2dcfb09 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,39 @@ + + + + + + + Music Album Catalog + + + +

Albums

+ + +