commit d9e40f0d739bef24e87640d1b5938720bf06bff1 Author: Ske087 Date: Mon Jan 13 15:36:39 2025 +0200 startup page seting diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0daabc9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +digiscreen/ +enviroment.txt + diff --git a/app.py b/app.py new file mode 100644 index 0000000..b1a1554 --- /dev/null +++ b/app.py @@ -0,0 +1,110 @@ +from flask import Flask, render_template, request, redirect, url_for +from flask_sqlalchemy import SQLAlchemy + +app = Flask(__name__) + +# Configurare baza de date SQLite +app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///dashboard.db' +app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False +db = SQLAlchemy(app) + +# Modele pentru baza de date +class Player(db.Model): + id = db.Column(db.Integer, primary_key=True) + username = db.Column(db.String(80), nullable=False) + hostname = db.Column(db.String(120), nullable=False) + ip = db.Column(db.String(15), nullable=False) + password = db.Column(db.String(120), nullable=False) + +class Group(db.Model): + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String(80), unique=True, nullable=False) + players = db.relationship('Player', secondary='group_players', backref='groups') + +group_players = db.Table('group_players', + db.Column('group_id', db.Integer, db.ForeignKey('group.id'), primary_key=True), + db.Column('player_id', db.Integer, db.ForeignKey('player.id'), primary_key=True) +) + +class Content(db.Model): + id = db.Column(db.Integer, primary_key=True) + file_name = db.Column(db.String(120), nullable=False) + duration = db.Column(db.Integer, nullable=False) + player_id = db.Column(db.Integer, db.ForeignKey('player.id'), nullable=True) + group_id = db.Column(db.Integer, db.ForeignKey('group.id'), nullable=True) + +@app.before_first_request +def create_tables(): + db.create_all() + +@app.route('/') +def dashboard(): + players = Player.query.all() + groups = Group.query.all() + return render_template('dashboard.html', players=players, groups=groups) + +@app.route('/add_player', methods=['GET', 'POST']) +def add_player(): + if request.method == 'POST': + username = request.form['username'] + hostname = request.form['hostname'] + ip = request.form['ip'] + password = request.form['password'] + + new_player = Player(username=username, hostname=hostname, ip=ip, password=password) + db.session.add(new_player) + db.session.commit() + + return redirect(url_for('dashboard')) + + return render_template('add_player.html') + +@app.route('/add_group', methods=['GET', 'POST']) +def add_group(): + if request.method == 'POST': + group_name = request.form['group_name'] + selected_players = request.form.getlist('players') + + new_group = Group(name=group_name) + for player_id in selected_players: + player = Player.query.get(int(player_id)) + new_group.players.append(player) + + db.session.add(new_group) + db.session.commit() + + return redirect(url_for('dashboard')) + + players = Player.query.all() + return render_template('add_group.html', players=players) + +@app.route('/upload_content', methods=['GET', 'POST']) +def upload_content(): + if request.method == 'POST': + target_type = request.form['target_type'] + target_id = request.form['target_id'] + files = request.files.getlist('files') + duration = int(request.form['duration']) + + for file in files: + if target_type == 'player': + new_content = Content(file_name=file.filename, duration=duration, player_id=int(target_id)) + elif target_type == 'group': + new_content = Content(file_name=file.filename, duration=duration, group_id=int(target_id)) + db.session.add(new_content) + + db.session.commit() + return redirect(url_for('dashboard')) + + players = Player.query.all() + groups = Group.query.all() + return render_template('upload_content.html', players=players, groups=groups) + +@app.route('/player/') +def player_page(player_id): + player = Player.query.get_or_404(player_id) + content = Content.query.filter_by(player_id=player_id).all() + return render_template('player_page.html', player=player, content=content) + +if __name__ == '__main__': + app.run(debug=True) diff --git a/templates/add_group.html b/templates/add_group.html new file mode 100644 index 0000000..7093d5a --- /dev/null +++ b/templates/add_group.html @@ -0,0 +1,20 @@ + + + + Add Group + + +

Add Group

+
+ +
+
+ {% for player in players %} + + {{ player.username }}
+ {% endfor %} + +
+ Back to Dashboard + + diff --git a/templates/add_player.html b/templates/add_player.html new file mode 100644 index 0000000..2b76d4a --- /dev/null +++ b/templates/add_player.html @@ -0,0 +1,21 @@ + + + + Add Player + + +

Add Player

+
+ +
+ +
+ +
+ +
+ +
+ Back to Dashboard + + diff --git a/templates/dashboard.html b/templates/dashboard.html new file mode 100644 index 0000000..b3f6a25 --- /dev/null +++ b/templates/dashboard.html @@ -0,0 +1,33 @@ + + + + Dashboard + + +

Dashboard

+ +

Players

+ + Add Player + +

Groups

+ + Add Group + +

Content Upload

+ Upload Content + + diff --git a/templates/player_page.html b/templates/player_page.html new file mode 100644 index 0000000..97fe070 --- /dev/null +++ b/templates/player_page.html @@ -0,0 +1,15 @@ + + + + Player Schedule + + +

Player Schedule

+ + Back to Dashboard + + diff --git a/templates/upload_content.html b/templates/upload_content.html new file mode 100644 index 0000000..4f45e75 --- /dev/null +++ b/templates/upload_content.html @@ -0,0 +1,37 @@ + + + + Upload Content + + +

Upload Content

+
+ +
+ + +
+ + +
+ +
+ +
+ Back to Dashboard + +