|
1 | 1 | from flask import Blueprint, render_template, request |
2 | 2 | from flask_login import login_required |
3 | | -from scripts.database import execute_query |
| 3 | +from datetime import datetime |
| 4 | +from scripts import database, google_services, data_fetcher |
| 5 | + |
4 | 6 |
|
5 | 7 | views_bp = Blueprint("views", __name__) |
6 | 8 |
|
|
9 | 11 | def welcome(): |
10 | 12 | return render_template("welcome.html") |
11 | 13 |
|
| 14 | +@views.route("/run-script", methods=["POST"]) |
| 15 | +def run_script(): |
| 16 | + try: |
| 17 | + start_date = request.form.get("start_date") |
| 18 | + end_date = request.form.get("end_date") or datetime.today().strftime("%Y-%m-%d") |
| 19 | + |
| 20 | + if not start_date: |
| 21 | + flash("Devi specificare una data di inizio", "danger") |
| 22 | + return redirect(url_for("views.welcome")) |
| 23 | + |
| 24 | + # 1. Prendo i tickers da Google Sheets |
| 25 | + tickers = google_services.get_universe_tickers_from_gsheet() |
| 26 | + |
| 27 | + # 2. Trunco la tabella universe |
| 28 | + database.execute_query("TRUNCATE TABLE universe RESTART IDENTITY CASCADE", fetch=False) |
| 29 | + |
| 30 | + # 3. Scarico i dati da yfinance |
| 31 | + rows = data_fetcher.get_data_for_db_between_dates(tickers, start_date, end_date) |
| 32 | + |
| 33 | + # 4. Inserisco i dati nel DB |
| 34 | + inserted = database.insert_batch_universe(rows, conflict_resolution="DO NOTHING") |
| 35 | + |
| 36 | + flash(f"Script eseguito correttamente ✅ ({inserted} righe inserite)", "success") |
| 37 | + except Exception as e: |
| 38 | + flash(f"Errore durante l'esecuzione: {e}", "danger") |
| 39 | + |
| 40 | + return redirect(url_for("views.welcome")) |
| 41 | + |
12 | 42 | @views_bp.route("/analytics") |
13 | 43 | @login_required |
14 | 44 | def analytics(): |
@@ -38,7 +68,7 @@ def run_query(): |
38 | 68 | error = "⚠️ Nessuna query inviata" |
39 | 69 | else: |
40 | 70 | try: |
41 | | - fetched, column_names = execute_query(query) |
| 71 | + fetched, column_names = database.execute_query(query) |
42 | 72 | if fetched: |
43 | 73 | columns = column_names # qui metti i nomi reali |
44 | 74 | results = fetched |
|
0 commit comments