From 2b943c5c228b928e0ac7a18f74ce019f1006f44d Mon Sep 17 00:00:00 2001 From: cedrick2711 Date: Fri, 14 Aug 2026 12:03:39 -0400 Subject: [PATCH] =?UTF-8?q?r=C3=A9gler=20probl=C3=A8me=20avec=20le=20bouto?= =?UTF-8?q?n=20pour=20sauvegarder=20les=20dispo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/routes/users.py | 39 ++++++++++++++++++-------------- app/templates/pages/profile.html | 7 ++---- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/app/routes/users.py b/app/routes/users.py index 4a0a38b..0e3294d 100644 --- a/app/routes/users.py +++ b/app/routes/users.py @@ -407,9 +407,18 @@ def add_disponibility(): @users_bp.route('/disponibilities/add_bulk', methods=['POST']) @login_required def add_disponibilities_bulk(): - """Add multiple disponibility blocks at once.""" + """Replace the player's disponibilities with the submitted slots. + + Performs a full replace (delete existing + insert submitted) so that + deselected slots are correctly removed, mirroring the coach availability + flow. This keeps the auto-save idempotent and correct. + """ data = request.get_json() - slots = data.get('slots', []) + slots = data.get('slots', []) if data else [] + + # Clear existing disponibilities for the current player. + PlayerDisponibility.query.filter_by(player_id=current_user.id).delete() + created = [] for slot in slots: day_of_week = slot.get('day_of_week') @@ -422,21 +431,17 @@ def add_disponibilities_bulk(): continue end_time = add_30_minutes(start_time) - existing = PlayerDisponibility.query.filter_by( - player_id=current_user.id, day_of_week=day_of_week, start_time=start_time, - ).first() - if not existing: - disponibility = PlayerDisponibility( - player_id=current_user.id, day_of_week=day_of_week, - start_time=start_time, end_time=end_time, - ) - db.session.add(disponibility) - db.session.flush() - created.append({ - 'id': disponibility.id, 'day_of_week': disponibility.day_of_week, - 'day_name': DAY_NAMES[disponibility.day_of_week], - 'start_time': disponibility.start_time.strftime('%H:%M'), - }) + disponibility = PlayerDisponibility( + player_id=current_user.id, day_of_week=day_of_week, + start_time=start_time, end_time=end_time, + ) + db.session.add(disponibility) + db.session.flush() + created.append({ + 'id': disponibility.id, 'day_of_week': disponibility.day_of_week, + 'day_name': DAY_NAMES[disponibility.day_of_week], + 'start_time': disponibility.start_time.strftime('%H:%M'), + }) db.session.commit() return jsonify({'success': True, 'created': created}) diff --git a/app/templates/pages/profile.html b/app/templates/pages/profile.html index 3eb2eff..f4b8b84 100644 --- a/app/templates/pages/profile.html +++ b/app/templates/pages/profile.html @@ -193,9 +193,6 @@

Loading...

- @@ -369,7 +366,7 @@ function saveCoachAvailability() { const msg = document.createElement('div'); msg.className = 'alert alert-success'; msg.style.marginTop = '10px'; - msg.innerHTML = ' Availability saved!'; + msg.innerHTML = ' Availability saved!'; document.getElementById('availability-grid').appendChild(msg); setTimeout(() => msg.remove(), 3000); } @@ -571,7 +568,7 @@ function saveDisponibilities() { var msg = document.createElement('div'); msg.className = 'alert alert-success'; msg.style.marginTop = '10px'; - msg.innerHTML = ' Disponibilities saved successfully!'; + msg.innerHTML = ' Disponibilities saved successfully!'; document.getElementById('disponibilities-grid').appendChild(msg); setTimeout(function() { msg.remove(); }, 3000); }