def put(self, project, bill_id): form = get_billform_for(project, True, meta={'csrf': False}) if form.validate(): bill = Bill.query.get(project, bill_id) form.save(bill, project) db.session.commit() return bill.id, 200 return form.errors, 400
def put(self, project, bill_id): form = get_billform_for(project, True, meta={"csrf": False}) if form.validate(): bill = Bill.query.get(project, bill_id) form.save(bill, project) db.session.commit() return bill.id, 200 return form.errors, 400
def update(self, project, bill_id): form = get_billform_for(project, True, meta={'csrf': False}) if form.validate(): bill = Bill.query.get(project, bill_id) form.save(bill, project) db.session.commit() return 200, bill.id return 400, form.errors
def post(self, project): form = get_billform_for(project, True, meta={"csrf": False}) if form.validate(): bill = Bill() form.save(bill, project) db.session.add(bill) db.session.commit() return bill.id, 201 return form.errors, 400
def post(self, project): form = get_billform_for(project, True, meta={'csrf': False}) if form.validate(): bill = Bill() form.save(bill, project) db.session.add(bill) db.session.commit() return bill.id, 201 return form.errors, 400
def add(self, project): form = get_billform_for(project, True, meta={'csrf': False}) if form.validate(): bill = Bill() form.save(bill, project) db.session.add(bill) db.session.commit() return 201, bill.id return 400, form.errors
def list_bills(): bill_form = get_billform_for(g.project) # set the last selected payer as default choice if exists if 'last_selected_payer' in session: bill_form.payer.data = session['last_selected_payer'] # Preload the "owers" relationship for all bills bills = g.project.get_bills().options(orm.subqueryload(Bill.owers)) return render_template("list_bills.html", bills=bills, member_form=MemberForm(g.project), bill_form=bill_form, add_bill=request.values.get('add_bill', False), current_view="list_bills", )
def list_bills(): bill_form = get_billform_for(g.project) # set the last selected payer as default choice if exists if 'last_selected_payer' in session: bill_form.payer.data = session['last_selected_payer'] # Preload the "owers" relationship for all bills bills = g.project.get_bills().options(orm.subqueryload(Bill.owers)) return render_template("list_bills.html", bills=bills, member_form=MemberForm(g.project), bill_form=bill_form, add_bill=request.values.get('add_bill', False), current_view="list_bills", )
def delete_bill(bill_id): global ghost_billform ghost_billform = get_billform_for(g.project) # fixme: everyone is able to delete a bill bill = Bill.query.get(g.project, bill_id) if not bill: return redirect(url_for(".list_bills")) # save the deleted bill, so that it can be restored if the # user chooses to undo this action ghost_billform.fill(bill) db.session.delete(bill) db.session.commit() flash(_("The bill has been deleted")) return redirect(url_for(".post_delete"))
def edit_bill(bill_id): # FIXME: Test this bill belongs to this project ! bill = Bill.query.get(g.project, bill_id) if not bill: raise NotFound() form = get_billform_for(g.project, set_default=False) if request.method == "POST" and form.validate(): form.save(bill, g.project) db.session.commit() flash(_("The bill has been modified")) return redirect(url_for(".list_bills")) if not form.errors: form.fill(bill) return render_template("add_bill.html", form=form, edit=True)
def edit_bill(bill_id): # FIXME: Test this bill belongs to this project ! bill = Bill.query.get(g.project, bill_id) if not bill: raise NotFound() form = get_billform_for(g.project, set_default=False) if request.method == 'POST' and form.validate(): form.save(bill, g.project) db.session.commit() flash(_("The bill has been modified")) return redirect(url_for('.list_bills')) if not form.errors: form.fill(bill) return render_template("add_bill.html", form=form, edit=True)
def add_bill(): form = get_billform_for(g.project) if request.method == "POST": if form.validate(): # save last selected payer in session session["last_selected_payer"] = form.payer.data session.update() bill = Bill() db.session.add(form.save(bill, g.project)) db.session.commit() flash(_("The bill has been added")) args = {} if form.submit2.data: args["add_bill"] = True return redirect(url_for(".list_bills", **args)) return render_template("add_bill.html", form=form)
def add_bill(): form = get_billform_for(g.project) if request.method == 'POST': if form.validate(): # save last selected payer in session session['last_selected_payer'] = form.payer.data session.update() bill = Bill() db.session.add(form.save(bill, g.project)) db.session.commit() flash(_("The bill has been added")) args = {} if form.submit2.data: args['add_bill'] = True return redirect(url_for('.list_bills', **args)) return render_template("add_bill.html", form=form)
def post_delete(): # this functions identically to list_bills, however # the undo action button is added bill_form = get_billform_for(g.project) # set the last selected payer as default choice if exists if "last_selected_payer" in session: bill_form.payer.data = session["last_selected_payer"] # Preload the "owers" relationship for all bills bills = ( g.project.get_bills() .options(orm.subqueryload(Bill.owers)) .paginate(per_page=100, error_out=True) ) return render_template( "list_bills_post_delete.html", bills=bills, member_form=MemberForm(g.project), bill_form=bill_form, add_bill=request.values.get("add_bill", False), current_view="list_bills_post_delete", )
def import_project(file, project): json_file = json.load(file) # Check if JSON is correct attr = ["what", "payer_name", "payer_weight", "amount", "date", "owers"] attr.sort() for e in json_file: if len(e) != len(attr): raise ValueError list_attr = [] for i in e: list_attr.append(i) list_attr.sort() if list_attr != attr: raise ValueError # From json : export list of members members_json = get_members(json_file) members = project.members members_already_here = list() for m in members: members_already_here.append(str(m)) # List all members not in the project and weight associated # List of tuples (name,weight) members_to_add = list() for i in members_json: if str(i[0]) not in members_already_here: members_to_add.append(i) # List bills not in the project # Same format than JSON element project_bills = project.get_pretty_bills() bill_to_add = list() for j in json_file: same = False for p in project_bills: if same_bill(p, j): same = True break if not same: bill_to_add.append(j) # Add users to DB for m in members_to_add: Person(name=m[0], project=project, weight=m[1]) db.session.commit() id_dict = {} for i in project.members: id_dict[i.name] = i.id # Create bills for b in bill_to_add: owers_id = list() for ower in b["owers"]: owers_id.append(id_dict[ower]) bill = Bill() form = get_billform_for(project) form.what = b["what"] form.amount = b["amount"] form.date = parse(b["date"]) form.payer = id_dict[b["payer_name"]] form.payed_for = owers_id db.session.add(form.fake_form(bill, project)) # Add bills to DB db.session.commit()