From f3bc8d574d56502a6fe58602efc6b7194adee7c4 Mon Sep 17 00:00:00 2001 From: Damien De Paoli Date: Fri, 14 Feb 2025 15:17:39 +1100 Subject: [PATCH] added now var to support save dialog naming based on now (YYYY-MM-DD), and removed export functionality. stub for saving data is there --- main.py | 84 ++++++--------------------------------------------------- 1 file changed, 8 insertions(+), 76 deletions(-) diff --git a/main.py b/main.py index be4654b..99ddceb 100644 --- a/main.py +++ b/main.py @@ -69,7 +69,14 @@ def index(): r.append( FP_VAR( 'FINAL # of TLS', 'TLS', 'readonly' ) ) DISP.append(r) - return render_template('index.html', finance=finance_data, depletion_date=depletion_date, savings=savings_per_fortnight, BUDGET=BUDGET, COMP=COMP, DISP=DISP) + now=datetime.today().strftime('%Y-%m-%d') + return render_template('index.html', now=now, finance=finance_data, depletion_date=depletion_date, savings=savings_per_fortnight, BUDGET=BUDGET, COMP=COMP, DISP=DISP) + +@app.route('/save', methods=['POST']) +def save(): + for el in request.form: + print(f"SAVE: {el}={request.form[el]}") + return "200" @app.route('/update', methods=['POST']) def update(): @@ -104,81 +111,6 @@ def update(): return redirect(url_for('index')) -@app.route("/download_csv", methods=["GET"]) -def download_csv(): - - finance_data = get_finance_data() - depletion_date, savings_per_fortnight, final_savings = calculate_savings_depletion(finance_data) - BUDGET=get_budget_data(finance_data) - - # Group data by year - data_by_year = defaultdict(list) - for date_str, amount in savings_per_fortnight: - year = date_str.split("-")[0] # Extract the year from the date - data_by_year[year].append((date_str, amount)) - - # Determine the maximum number of entries for any year - max_entries_per_year = max(len(entries) for entries in data_by_year.values()) - - # Sort years for column ordering - years = sorted(data_by_year.keys()) - - # get finance data into a list for spitting out during csv last column dump - fd_lst = list(finance_data.items()) - fd_lst[0]=('Variable', 'Value') - - # Create an in-memory output file - output = io.StringIO() - - # Create a CSV writer object - writer = csv.writer(output) - - # Write header: each year gets two columns (Date, Value) - header = [] - for year in years: - header.extend([f"{year}-Date", f"{year}-Value"]) - writer.writerow(header) - - # Write the data rows - cnt=0 - for i in range(max_entries_per_year): - row = [] - for year in years: - # Add date and value if they exist for the current index - if i < len(data_by_year[year]): - date, value = data_by_year[year][i] - row.extend([date, value]) - else: - row.extend(["", ""]) # If no data for this year, leave blank cells - - # spacer - row.extend([""]) - - # now add budget data - if cnt < len(BUDGET): - row.extend( BUDGET[cnt] ) - else: - row.extend(["", ""]) # If no data for this year, leave blank cells - - # spacer - row.extend([""]) - - # now add reference data - if cnt < len(fd_lst): - row.extend(fd_lst[cnt]) - writer.writerow(row) - - cnt += 1 - - csv_data = output.getvalue() - - # Create a Flask Response object, with CSV mime type and downloadable as a file - return Response( - csv_data, - mimetype="text/csv", - headers={"Content-disposition": "attachment; filename=finance_data.csv"} - ) - # Main program if __name__ == '__main__': app.run(debug=True)