diff --git a/app.py b/app.py index 584e58b..8f886ea 100755 --- a/app.py +++ b/app.py @@ -488,7 +488,8 @@ def create_group(): if request.method == 'POST': group_name = request.form['name'] player_ids = request.form.getlist('players') - create_group_util(group_name, player_ids) + orientation = request.form.get('orientation', 'Landscape') + create_group_util(group_name, player_ids, orientation) flash(f'Group "{group_name}" created successfully.', 'success') return redirect(url_for('dashboard')) players = Player.query.all() @@ -514,7 +515,8 @@ def edit_group(group_id): if request.method == 'POST': name = request.form['name'] player_ids = request.form.getlist('players') - edit_group_util(group_id, name, player_ids) + orientation = request.form.get('orientation', group.orientation) + edit_group_util(group_id, name, player_ids, orientation) flash(f'Group "{name}" updated successfully.', 'success') return redirect(url_for('dashboard')) players = Player.query.all() diff --git a/docker-compose.yml b/docker-compose.yml index 7df0c97..f1ef723 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,7 @@ #version: '"1.1.0"' services: web: + build: . image: digiserver:latest ports: - "8880:5000" @@ -12,5 +13,5 @@ services: - SECRET_KEY=Ma_Duc_Dupa_Merele_Lui_Ana volumes: - /opt/digi-s/instance:/app/instance - - /opt/digi-s/static/uploads:/app/static/uploads + - /opt/digi-s/uploads:/app/static/uploads restart: unless-stopped diff --git a/entrypoint.sh b/entrypoint.sh index cd6b7b1..9b71a32 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -7,16 +7,7 @@ mkdir -p instance # Check if database exists if [ ! -f instance/dashboard.db ]; then - echo "No database found, initializing..." - - # Remove and recreate migrations directory to ensure clean state - rm -rf migrations - mkdir -p migrations - - # Initialize the database - flask db init - flask db migrate -m "Initial migration" - flask db upgrade + echo "No database found, creating fresh database..." # Create admin user if environment variables are set if [ -n "$ADMIN_USER" ] && [ -n "$ADMIN_PASSWORD" ]; then @@ -26,8 +17,11 @@ if [ ! -f instance/dashboard.db ]; then echo "Warning: ADMIN_USER or ADMIN_PASSWORD not set, skipping admin creation" fi else - echo "Existing database found, applying migrations..." - flask db upgrade + echo "Existing database found, skipping initialization..." + echo "Creating admin user if needed..." + if [ -n "$ADMIN_USER" ] && [ -n "$ADMIN_PASSWORD" ]; then + flask create-admin --username "$ADMIN_USER" --password "$ADMIN_PASSWORD" 2>/dev/null || echo "Default user '$ADMIN_USER' already exists." + fi fi echo "Starting DigiServer..." diff --git a/instance/dashboard.db b/instance/dashboard.db deleted file mode 100644 index 67f6fdd..0000000 Binary files a/instance/dashboard.db and /dev/null differ diff --git a/templates/edit_group.html b/templates/edit_group.html index 6e66e3a..55441a3 100644 --- a/templates/edit_group.html +++ b/templates/edit_group.html @@ -49,12 +49,24 @@ +
+
+ + +
+
+
Back to Dashboard @@ -62,5 +74,45 @@
+ \ No newline at end of file diff --git a/templates/manage_group.html b/templates/manage_group.html index 6535791..aaaf8a8 100644 --- a/templates/manage_group.html +++ b/templates/manage_group.html @@ -189,7 +189,7 @@ document.addEventListener('DOMContentLoaded', function() { }); // Send to server - fetch('{{ url_for("update_group_content_order", group_id=group.id) }}', { + fetch('{{ url_for("update_group_content_order_route", group_id=group.id) }}', { method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/utils/group_player_management.py b/utils/group_player_management.py index 2d4c960..b0e34b7 100644 --- a/utils/group_player_management.py +++ b/utils/group_player_management.py @@ -35,15 +35,24 @@ def create_group(name, player_ids, orientation='Landscape'): log_group_created(name) return new_group -def edit_group(group_id, name, player_ids): +def edit_group(group_id, name, player_ids, orientation=None): """ - Edit an existing group, updating its name and players. + Edit an existing group, updating its name, orientation, and players. Handles locking/unlocking players appropriately. """ group = Group.query.get_or_404(group_id) old_name = group.name # Store old name in case it changes group.name = name + # Update orientation if provided + if orientation: + group.orientation = orientation + # Validate that all selected players have the matching orientation + for player_id in player_ids: + player = Player.query.get(player_id) + if player and player.orientation != orientation: + raise ValueError(f"Player '{player.username}' has orientation '{player.orientation}', which does not match group orientation '{orientation}'.") + # Get current players in the group current_player_ids = [player.id for player in group.players]