def create(): form = ExpenseForm() modes = PaymentMode.query.filter_by(user_id=current_user.id) form.pay_mode.choices = [('', 'Choose one')] + [(m.id, m.mode) for m in modes] estimates = Budget.query.filter(Budget.user_id == current_user.id, Budget.active.is_(True)) form.estimate_entry.choices = [('', 'Choose one')] + [(e.id, e.item) for e in estimates] if form.validate_on_submit(): e = Expense() e.user_id = current_user.id e.description = form.description.data e.date = form.date.data e.amount = form.amount.data e.mode_id = int(form.pay_mode.data) e.budget_id = (int(form.estimate_entry.data) if form.estimate_entry.data else None) e.comments = form.comments.data e.set_tags(form.taglist.data) db.session.add(e) db.session.commit() flash('New expense created.', 'success') if request.form.get('submit2') == 'Save and add another': return redirect(url_for('expense.create')) return redirect(url_for('expense.list_expenses')) return render_template('expense/new.html', title='New expense', form=form, heading='Create new expense')
def post(self, new_data): '''Create new expense.''' amount = new_data.pop('amount') user_id = get_jwt_identity() expense.current_user = User.query.get(user_id) exp = Expense(**new_data) exp.amount = amount exp.user_id = user_id db.session.add(exp) db.session.commit() return exp
def edit_expense(id): i = None if id!="0": i = Expense.query.filter_by(id=id).first_or_404() form = EditExpenseForm() if form.validate_on_submit(): if id == "0": i = Expense() i.user_id = current_user.id db.session.add(i) i.description = form.description.data db.session.commit() flash(_('Your changes have been saved.')) return redirect(url_for('expenses')) elif request.method == 'GET': if id == "0": form.id.data = 0 form.description.data = "" else: form.id.data = i.id form.description.data = i.description return render_template('edit_expense.html', title=_('Edit Expense'), form=form)