From e1632af0b52eff71a142f2e9f03c00937f9c6337 Mon Sep 17 00:00:00 2001 From: rosechar Date: Wed, 15 Apr 2020 00:10:14 -0400 Subject: [PATCH] updated models.py, web.py, main.css for undo bill delete --- ihatemoney/models.py | 8 ++++++++ ihatemoney/static/css/main.css | 1 - ihatemoney/web.py | 26 +++++++++++++++++++++++++- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/ihatemoney/models.py b/ihatemoney/models.py index 4d32fd97..41e719cf 100644 --- a/ihatemoney/models.py +++ b/ihatemoney/models.py @@ -391,6 +391,14 @@ class Bill(db.Model): "external_link": self.external_link, } + def to_json(self): + bill_dict = self._to_serialize + owers_list = [] + for ower in bill_dict["owers"]: + owers_list.append(ower.id) + bill_dict["owers"] = owers_list + return bill_dict + def pay_each(self): """Compute what each share has to pay""" if self.owers: diff --git a/ihatemoney/static/css/main.css b/ihatemoney/static/css/main.css index fe8eec20..9a5cbffa 100644 --- a/ihatemoney/static/css/main.css +++ b/ihatemoney/static/css/main.css @@ -429,7 +429,6 @@ tr.payer_line .balance-name { position: absolute; top: 4.5rem; width: 100%; - pointer-events: none; } .light { diff --git a/ihatemoney/web.py b/ihatemoney/web.py index 8e0bca6c..a06f29e8 100644 --- a/ihatemoney/web.py +++ b/ihatemoney/web.py @@ -27,6 +27,7 @@ from flask import ( url_for, send_file, send_from_directory, + Markup, ) from flask_babel import get_locale, gettext as _ from flask_mail import Message @@ -698,10 +699,33 @@ def delete_bill(bill_id): if not bill: return redirect(url_for(".list_bills")) + session["recently_deleted_bill"] = bill.to_json() db.session.delete(bill) db.session.commit() - flash(_("The bill has been deleted")) + url = url_for(".undo_delete_bill") + alert = ( + 'The bill has been deleted undo ' + ) + flash(Markup(alert)) + + return redirect(url_for(".list_bills")) + +@main.route("//undo") +def undo_delete_bill(): + bill = Bill() + form = get_billform_for(g.project) + form.what = session["recently_deleted_bill"]["what"] + form.amount = session["recently_deleted_bill"]["amount"] + form.date = parse(session["recently_deleted_bill"]["date"]) + form.payer = session["recently_deleted_bill"]["payer_id"] + form.payed_for = session["recently_deleted_bill"]["owers"] + form.external_link = session["recently_deleted_bill"]["external_link"] + + db.session.add(form.fake_form(bill, g.project)) + db.session.commit() return redirect(url_for(".list_bills"))