Refactor routes Flask en Blueprints
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
from flask import Blueprint, jsonify, render_template, request
|
||||
|
||||
from app.decorators import login_required
|
||||
|
||||
analyse_bp = Blueprint("analyse", __name__)
|
||||
|
||||
|
||||
@analyse_bp.route("/analyse", methods=["GET"])
|
||||
@login_required
|
||||
def analyse():
|
||||
"""Page d'analyse technique. Si un ISIN est passé en paramètre (?isin=...),
|
||||
on l'analyse et on affiche la fiche complète ; sinon on affiche la page
|
||||
de recherche."""
|
||||
isin = request.args.get("isin", "").strip().upper()
|
||||
|
||||
if not isin:
|
||||
return render_template("analyse.html", resultat=None)
|
||||
|
||||
from app.services.analysis import analyse_action
|
||||
|
||||
print(f"[analyse] ISIN demandé : {isin}", flush=True)
|
||||
resultat = analyse_action(isin)
|
||||
|
||||
if resultat is None:
|
||||
# ISIN absent du référentiel actions
|
||||
return render_template(
|
||||
"analyse.html",
|
||||
resultat={
|
||||
"isin": isin,
|
||||
"action": None,
|
||||
"erreur": f"Aucune donnée trouvée pour l'ISIN {isin}. "
|
||||
f"Vérifiez le code ou importez d'abord l'historique.",
|
||||
},
|
||||
isin_recherche=isin,
|
||||
)
|
||||
|
||||
if resultat.get("erreur"):
|
||||
# ISIN présent mais historique insuffisant
|
||||
print(f"[analyse] {isin} : {resultat['erreur']}", flush=True)
|
||||
else:
|
||||
print(
|
||||
f"[analyse] {isin} : cours={resultat.get('cours')} "
|
||||
f"score={resultat.get('score')} tendance={resultat.get('tendance')}",
|
||||
flush=True,
|
||||
)
|
||||
|
||||
return render_template("analyse.html", resultat=resultat, isin_recherche=isin)
|
||||
|
||||
|
||||
@analyse_bp.route("/analyse/<isin>", methods=["GET"])
|
||||
@login_required
|
||||
def analyse_isin(isin):
|
||||
"""Page d'analyse technique complète pour un ISIN donné."""
|
||||
from app.services.analysis import analyse_action
|
||||
|
||||
isin = isin.strip().upper()
|
||||
resultat = analyse_action(isin)
|
||||
return render_template("analyse.html", resultat=resultat, isin_recherche=isin)
|
||||
|
||||
|
||||
@analyse_bp.route("/api/analyse/<isin>", methods=["GET"])
|
||||
@login_required
|
||||
def api_analyse(isin):
|
||||
"""API JSON retournant l'analyse technique complète d'un ISIN."""
|
||||
from app.services.analysis import analyse_action
|
||||
|
||||
isin = isin.strip().upper()
|
||||
resultat = analyse_action(isin)
|
||||
if resultat is None:
|
||||
return jsonify({"erreur": f"ISIN {isin} introuvable dans le référentiel actions."}), 404
|
||||
if resultat.get("erreur"):
|
||||
return jsonify(resultat), 200
|
||||
return jsonify(resultat)
|
||||
Reference in New Issue
Block a user