def create_test_transaction( user_id, title='Test Transaction', date=datetime.now(), amount=100.00, description='Test Description', income=False, is_recurring=False, freq=None, interval=None, count=None, until=None, ): t = Transaction( user_id=user_id, title=title, date=date, income=income, is_recurring=is_recurring, freq=freq, interval=interval, count=count, until=until, ) t.set_amount(amount) if is_recurring: t.set_recurring(None) db.session.add(t) db.session.commit() return Transaction.query.filter_by(id=t.id).first()
def add_transaction(): form = TransactionForm(request.form) if request.method == 'POST': if 'cancel' in request.form.keys(): year = 0 month = 0 flash("Add cancelled.") elif form.validate(): year = form.date.data.year month = form.date.data.month transaction = Transaction( user_id=current_user.id, title=form.title.data, date=form.date.data, description=form.description.data, income=form.income.data, is_recurring=form.is_recurring.data, freq=form.freq.data, interval=form.interval.data, count=form.count.data, until=form.until.data, ) transaction.set_amount(form.amount.data) if form.is_recurring.data: transaction.set_recurring(form.byweekday.data) db.session.add(transaction) db.session.commit() flash("Transaction added.") return redirect(url_for( "main.index", year=year, month=month, )) return render_template( "transaction.html", title="Add Transaction", form=form, )
def edit_the_transaction(form, edited_transaction, current_date): if form.is_recurring.data and form.change.data == 'current': if form.amount.data != edited_transaction.amount: added_transaction = Transaction( title=form.title.data, description=form.description.data, income=form.income.data, is_recurring=False, freq=form.freq.data, interval=form.interval.data, count=form.count.data, until=form.until.data, ) added_transaction.set_amount(form.amount.data) added_transaction.set_recurring(form.byweekday.data) else: added_transaction = TransactionException( delete=False, transaction_id=edited_transaction.id, ) added_transaction.date = form.date.data added_transaction.user_id = current_user.id db.session.add(added_transaction) removed_transaction = TransactionException( date=current_date, delete=True, transaction_id=edited_transaction.id, user_id=current_user.id, ) db.session.add(removed_transaction) elif form.is_recurring.data and form.change.data == 'after': added_transaction = Transaction( user_id=current_user.id, title=form.title.data, date=form.date.data, description=form.description.data, income=form.income.data, is_recurring=form.is_recurring.data, freq=form.freq.data, interval=form.interval.data, count=form.count.data, until=form.until.data, transaction_exceptions=edited_transaction.transaction_exceptions, ) added_transaction.set_amount(form.amount.data) added_transaction.set_recurring(form.byweekday.data) db.session.add(added_transaction) edited_transaction.count = None edited_transaction.until = current_date - timedelta(days=1) edited_transaction.set_recurring(edited_transaction.return_byweekday()) else: edited_transaction.count = form.count.data edited_transaction.until = form.until.data edited_transaction.title = form.title.data edited_transaction.date = form.date.data edited_transaction.description = form.description.data edited_transaction.income = form.income.data edited_transaction.is_recurring = form.is_recurring.data edited_transaction.freq = form.freq.data edited_transaction.interval = form.interval.data edited_transaction.set_amount(form.amount.data) if form.is_recurring.data: edited_transaction.set_recurring(form.byweekday.data) db.session.commit()