diff --git a/budget/models.py b/budget/models.py index 586f43b..db57869 100644 --- a/budget/models.py +++ b/budget/models.py @@ -70,7 +70,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 d127b06..14e605a 100644 --- a/budget/tests.py +++ b/budget/tests.py @@ -272,6 +272,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 defa17e..5afd9b4 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"))