|
|
from flask_wtf import FlaskForm
|
|
|
from wtforms import StringField, FloatField, SubmitField, SelectField
|
|
|
from wtforms.validators import DataRequired, NumberRange
|
|
|
from app.models import Account
|
|
|
|
|
|
class AccountForm(FlaskForm):
|
|
|
name = StringField('Account Name', validators=[DataRequired()])
|
|
|
account_type = SelectField('Account Type', choices=[
|
|
|
('asset', 'Asset'),
|
|
|
('expense', 'Expense'),
|
|
|
('income', 'Income')
|
|
|
], validators=[DataRequired()])
|
|
|
balance = FloatField('Initial Balance', validators=[NumberRange(min=0, message='Balance must be at least 0')])
|
|
|
submit = SubmitField('Add Account')
|
|
|
|
|
|
class TransactionForm(FlaskForm):
|
|
|
amount = FloatField('Amount', validators=[DataRequired()])
|
|
|
type = SelectField('Type', choices=[
|
|
|
('transfer', 'Transfer'),
|
|
|
('expense', 'Expense'),
|
|
|
('income', 'Income')
|
|
|
], validators=[DataRequired()])
|
|
|
source_account = SelectField('Source Account', coerce=int, validators=[DataRequired()])
|
|
|
destination_account = SelectField('Destination Account', coerce=int, validators=[DataRequired()])
|
|
|
concept = StringField('Concept', validators=[DataRequired()])
|
|
|
submit = SubmitField('Add Transaction')
|
|
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
super(TransactionForm, self).__init__(*args, **kwargs)
|
|
|
self.source_account.choices = [(account.id, account.name) for account in Account.query.all()]
|
|
|
self.destination_account.choices = [(account.id, account.name) for account in Account.query.all()]
|