aboutsummaryrefslogtreecommitdiff
path: root/budget
diff options
context:
space:
mode:
Diffstat (limited to 'budget')
-rw-r--r--budget/models.py8
-rw-r--r--budget/web.py11
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"])