updated the manage player pages

This commit is contained in:
Ske087
2025-01-24 21:18:47 +02:00
parent 9e7bccaae1
commit df0f11eabd
10 changed files with 213 additions and 82 deletions

60
app.py
View File

@@ -1,5 +1,5 @@
import os
from flask import Flask, render_template, request, redirect, url_for, session
from flask import Flask, render_template, request, redirect, url_for, session, flash
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required, current_user
from flask_bcrypt import Bcrypt
@@ -80,6 +80,12 @@ def dashboard():
groups = Group.query.all()
return render_template('dashboard.html', players=players, groups=groups)
@app.route('/dashboard')
@login_required
def dashboard():
logo_exists = os.path.exists(os.path.join(app.config['UPLOAD_FOLDER'], 'logo.png'))
return render_template('dashboard.html', logo_exists=logo_exists)
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
@@ -101,7 +107,11 @@ def login():
if user and bcrypt.check_password_hash(user.password, password):
login_user(user)
return redirect(url_for('dashboard'))
return render_template('login.html')
else:
flash('Login Unsuccessful. Please check username and password', 'danger')
login_picture_exists = os.path.exists(os.path.join(app.config['UPLOAD_FOLDER'], 'login_picture.png'))
return render_template('login.html', login_picture_exists=login_picture_exists)
@app.route('/logout')
@login_required
@@ -144,8 +154,10 @@ def upload_content():
@login_required
@admin_required
def admin():
logo_exists = os.path.exists(os.path.join(app.config['UPLOAD_FOLDER'], 'logo.png'))
login_picture_exists = os.path.exists(os.path.join(app.config['UPLOAD_FOLDER'], 'login_picture.png'))
users = User.query.all()
return render_template('admin.html', users=users)
return render_template('admin.html', users=users, logo_exists=logo_exists, login_picture_exists=login_picture_exists)
@app.route('/admin/change_role/<int:user_id>', methods=['POST'])
@login_required
@@ -373,7 +385,7 @@ def integrate_player():
groups = Group.query.all()
return render_template('integrate_player.html', players=players, groups=groups)
@app.route('/player/<int:player_id>/edit', methods=['GET', 'POST'])
@app.route('/edit_player/<int:player_id>', methods=['GET', 'POST'])
@login_required
@admin_required
def edit_player(player_id):
@@ -385,7 +397,9 @@ def edit_player(player_id):
player.password = bcrypt.generate_password_hash(request.form['password']).decode('utf-8')
db.session.commit()
return redirect(url_for('player_page', player_id=player.id))
return render_template('edit_player.html', player=player)
return_url = request.args.get('return_url', url_for('player_page', player_id=player.id))
return render_template('edit_player.html', player=player, return_url=return_url)
@app.route('/change_theme', methods=['POST'])
@login_required
@@ -396,6 +410,42 @@ def change_theme():
db.session.commit()
return redirect(url_for('admin'))
@app.route('/upload_logo', methods=['POST'])
@login_required
@admin_required
def upload_logo():
if 'logo' not in request.files:
return redirect(url_for('admin'))
file = request.files['logo']
if file.filename == '':
return redirect(url_for('admin'))
if file:
filename = secure_filename(file.filename)
file_path = os.path.join(app.config['UPLOAD_FOLDER'], 'logo.png')
file.save(file_path)
return redirect(url_for('admin'))
@app.route('/upload_personalization_pictures', methods=['POST'])
@login_required
@admin_required
def upload_personalization_pictures():
logo_file = request.files.get('logo')
login_picture_file = request.files.get('login_picture')
if logo_file and logo_file.filename != '':
logo_filename = secure_filename(logo_file.filename)
logo_file_path = os.path.join(app.config['UPLOAD_FOLDER'], 'logo.png')
logo_file.save(logo_file_path)
if login_picture_file and login_picture_file.filename != '':
login_picture_filename = secure_filename(login_picture_file.filename)
login_picture_file_path = os.path.join(app.config['UPLOAD_FOLDER'], 'login_picture.png')
login_picture_file.save(login_picture_file_path)
return redirect(url_for('admin'))
@app.context_processor
def inject_theme():
if current_user.is_authenticated: