diff options
| -rw-r--r-- | budget/models.py | 8 | ||||
| -rw-r--r-- | budget/web.py | 11 |
2 files changed, 16 insertions, 3 deletions
diff --git a/budget/models.py b/budget/models.py index efb5a3d..66eb4b6 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 a838b09..6b3849f 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("/<string:project_id>/add", methods=["GET", "POST"]) |
