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 add_expense(current_user): category = request.args.get('category') amount = request.args.get('amount') dt = request.args.get('date') private = request.args.get('private') if not category or not amount: return jsonify({'message': 'Insufficient parameters'}), 400 exp = Expense(category=category, amount=amount, SpentBy=current_user) if dt: exp.date = dt if private: exp.private = private db.session.add(exp) db.session.commit() return jsonify({'message': 'Expense added'}), 201