aboutsummaryrefslogtreecommitdiff
path: root/budget
diff options
context:
space:
mode:
Diffstat (limited to 'budget')
-rw-r--r--budget/models.py5
-rw-r--r--budget/tests.py7
-rw-r--r--budget/web.py10
3 files changed, 16 insertions, 6 deletions
diff --git a/budget/models.py b/budget/models.py
index 2d44145..900b1d0 100644
--- a/budget/models.py
+++ b/budget/models.py
@@ -117,7 +117,10 @@ class Project(db.Model):
This method returns the status DELETED or DEACTIVATED regarding the
changes made.
"""
- person = Person.query.get(member_id, self)
+ try:
+ person = Person.query.get(member_id, self)
+ except orm.exc.NoResultFound:
+ return None
if not person.has_bills():
db.session.delete(person)
db.session.commit()
diff --git a/budget/tests.py b/budget/tests.py
index 901924b..9eea518 100644
--- a/budget/tests.py
+++ b/budget/tests.py
@@ -275,6 +275,13 @@ class BudgetTestCase(TestCase):
response = self.app.get("/raclette/members/1/delete")
self.assertEqual(response.status_code, 405)
+ #delete user using POST method
+ self.app.post("/raclette/members/1/delete")
+ self.assertEqual(
+ len(models.Project.query.get("raclette").active_members), 0)
+ #try to delete an user already deleted
+ self.app.post("/raclette/members/1/delete")
+
def test_demo(self):
# test that a demo project is created if none is defined
self.assertEqual([], models.Project.query.all())
diff --git a/budget/web.py b/budget/web.py
index 3125f9b..0b302cd 100644
--- a/budget/web.py
+++ b/budget/web.py
@@ -307,11 +307,11 @@ def reactivate(member_id):
@main.route("/<project_id>/members/<member_id>/delete", methods=["POST"])
def remove_member(member_id):
member = g.project.remove_member(member_id)
- if member.activated == False:
- flash(_("User '%(name)s' has been deactivated", name=member.name))
- else:
- flash(_("User '%(name)s' has been removed", name=member.name))
-
+ if member:
+ if member.activated == False:
+ flash(_("User '%(name)s' has been deactivated", name=member.name))
+ else:
+ flash(_("User '%(name)s' has been removed", name=member.name))
return redirect(url_for(".list_bills"))