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"))