Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
implemented the filter feature for bills based on start date and end date.
  • Loading branch information
charlieezh authored Apr 26, 2024
1 parent 9433b7d commit 9b514ca
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 13 deletions.
9 changes: 9 additions & 0 deletions ihatemoney/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,12 @@ def order_bills(query):
.order_by(Bill.id.desc())
)

@staticmethod
def filter(query, start_date, end_date):
return (
query.filter(Bill.date >= start_date, Bill.date <= end_date)
)

def get_bill_weights(self):
"""
Return all bills for this project, along with the sum of weight for each bill.
Expand All @@ -285,6 +291,9 @@ def get_bill_weights_ordered(self):
"""Ordered version of get_bill_weights"""
return self.order_bills(self.get_bill_weights())

def get_filtered_bill_weights_ordered(self, start_date, end_date):
return self.filter(self.get_bill_weights_ordered(), start_date, end_date)

def get_member_bills(self, member_id):
"""Return the list of bills related to a specific member"""
return (
Expand Down
44 changes: 31 additions & 13 deletions ihatemoney/web.py
Original file line number Diff line number Diff line change
Expand Up @@ -642,7 +642,7 @@ def invite():
return render_template("send_invites.html", form=form, qrcode=qrcode_svg)


@main.route("/<project_id>/")
@main.route("/<project_id>/", methods=["GET", "POST"])
def list_bills():
bill_form = get_billform_for(g.project)
# Used for CSRF validation
Expand All @@ -666,19 +666,37 @@ def list_bills():
# Each item will be a (weight_sum, Bill) tuple.
# TODO: improve this awkward result using column_property:
# https://docs.sqlalchemy.org/en/14/orm/mapped_sql_expr.html.
weighted_bills = g.project.get_bill_weights_ordered().paginate(
per_page=100, error_out=True
)
if request.method == "GET":
weighted_bills = g.project.get_bill_weights_ordered().paginate(
per_page=100, error_out=True
)
return render_template(
"list_bills.html",
bills=weighted_bills,
member_form=MemberForm(g.project),
bill_form=bill_form,
csrf_form=csrf_form,
add_bill=request.values.get("add_bill", False),
current_view="list_bills",
)
if request.method == "POST":
start_date = request.form['start_date']
end_date = request.form['end_date']
weighted_bills = g.project.get_filtered_bill_weights_ordered(start_date, end_date).paginate(
per_page=100, error_out=True
)
return render_template(
"list_bills.html",
bills=weighted_bills,
member_form=MemberForm(g.project),
bill_form=bill_form,
csrf_form=csrf_form,
add_bill=request.values.get("add_bill", False),
current_view="list_bills",
start_date=start_date,
end_date=end_date,
)

return render_template(
"list_bills.html",
bills=weighted_bills,
member_form=MemberForm(g.project),
bill_form=bill_form,
csrf_form=csrf_form,
add_bill=request.values.get("add_bill", False),
current_view="list_bills",
)


@main.route("/<project_id>/members/add", methods=["GET", "POST"])
Expand Down

0 comments on commit 9b514ca

Please sign in to comment.