from flask import jsonify, request import db from core.flask_app import app @app.route("/game//quests/", methods=["POST"]) def quest_update(slug, quest_id): """Refusé (400) si "recompense_score" est abaissé SOUS le total déjà réparti entre les questions ("❓ Question") du dialogue de cette quête — voir db.quest_dialogues_total_reward, même contrainte que routes/quests/quest_dialogues.py mais dans l'autre sens (ici c'est le budget total qui bouge, pas la répartition).""" body = request.get_json(silent=True) or {} if "recompense_score" in body: quest = db.get_quest(slug, quest_id) if quest is None: return jsonify({"error": "quête introuvable"}), 404 try: new_score = int(body["recompense_score"]) except (TypeError, ValueError): new_score = None if new_score is not None: allocated = db.quest_dialogues_total_reward(quest["dialogues"]) if new_score < allocated: return jsonify({ "error": ( f"La récompense totale ({new_score} pts) est inférieure aux " f"{allocated} pts déjà répartis entre les questions du dialogue." ), }), 400 quest = db.update_quest(slug, quest_id, body) if quest is None: return jsonify({"error": "quête introuvable"}), 404 return jsonify({"quest": quest})