aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorA.Avenel <avenel.alexandre@gmail.com>2013-04-08 11:29:31 +0200
committerA.Avenel <avenel.alexandre@gmail.com>2013-04-08 11:29:31 +0200
commit4d329a76aeb9ca06895c4293e653aa38dbeab2c5 (patch)
tree026b326288666c650ab9db85d097b2ae42581791
parentbfea4e436fbe3126949785eff66aef901f6e2f65 (diff)
downloadihatemoney-mirror-4d329a76aeb9ca06895c4293e653aa38dbeab2c5.zip
ihatemoney-mirror-4d329a76aeb9ca06895c4293e653aa38dbeab2c5.tar.gz
ihatemoney-mirror-4d329a76aeb9ca06895c4293e653aa38dbeab2c5.tar.bz2
Bugfix#92 : error when deleting an user
-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 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"))