From 0e5bab13af39d2fc7073860aa05279bcf9f19e82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Sureau?= Date: Tue, 9 Aug 2011 19:34:46 +0200 Subject: [PATCH] Users are deleted when no bill is assigned to them. Fixes #5 --- budget/models.py | 8 ++++++++ budget/web.py | 11 ++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/budget/models.py b/budget/models.py index efb5a3da..66eb4b61 100644 --- a/budget/models.py +++ b/budget/models.py @@ -48,6 +48,14 @@ class Person(db.Model): name = db.Column(db.UnicodeText) activated = db.Column(db.Boolean, default=True) + def is_used(self): + bills_as_ower_number = db.session.query(Bill).join(billowers, Person)\ + .filter("Bill.id == billowers.bill_id")\ + .filter("Person.id == billowers.person_id")\ + .filter(Person.id == self.id)\ + .count() + return bills_as_ower_number != 0 or len(self.bills) != 0 + def __str__(self): return self.name diff --git a/budget/web.py b/budget/web.py index a838b094..6b3849fc 100644 --- a/budget/web.py +++ b/budget/web.py @@ -134,9 +134,14 @@ def add_member(project): def remove_member(project, member_id): person = Person.query.get_or_404(member_id) if person.project == project: - person.activated = False - db.session.commit() - flash("%s has been removed" % person.name) + if not person.is_used(): + db.session.delete(person) + db.session.commit() + flash("User '%s' has been removed" % person.name) + else: + person.activated = False + db.session.commit() + flash("User '%s' has been desactivated" % person.name) return redirect(url_for("list_bills", project_id=project.id)) @app.route("//add", methods=["GET", "POST"])