summary history files

web/penny/resources/bankaccounts/controllers.py
from penny import models
from penny.common import forms
from flask import Blueprint, g, render_template, url_for, redirect
from flask_security import auth_required
from sqlalchemy.orm.exc import NoResultFound
from penny.resources.bankaccounts.forms import FormBankAccount


bankaccounts = Blueprint("bankaccounts", __name__)


@bankaccounts.route("/bankaccounts", endpoint="_bankaccounts")
@auth_required()
def _bankaccounts():
    return render_template(
        "bankaccounts.html", data_url=url_for("data_bankaccounts.bankaccounts")
    )


@bankaccounts.route(
    "/bankaccounts/<int:id>", methods=["GET", "POST"], endpoint="bankaccount"
)
@auth_required()
def bankaccount(id):

    try:
        bankaccount = (
            models.db.session.query(models.BankAccount)
            .filter_by(id=id, user=g.user)
            .one()
        )
    except NoResultFound:
        return url_for("bankaccounts._bankaccounts")

    form = FormBankAccount(obj=bankaccount)
    form.bankaccounttype.choices = forms.get_bankaccounttype_as_choices()
    form.entity.choices = forms.get_entities_as_choices()

    if form.validate_on_submit():
        bankaccount.bank = form.bank.data
        bankaccount.number = form.number.data
        bankaccount.desc = form.desc.data

        if form.bankaccounttype.data:
            bankaccount.bankaccounttype_id = form.bankaccounttype.data

        if form.entity.data:
            bankaccount.entity_id = form.entity.data

        models.db.session.add(bankaccount)
        models.db.session.commit()

    form.set_defaults(bankaccount)

    return render_template("bankaccount.html", form=form, bankaccount=bankaccount)


@bankaccounts.route("/bankaccounts/add", methods=["GET", "POST"], endpoint="add")
@auth_required()
def add():
    form = FormBankAccount()
    form.bankaccounttype.choices = forms.get_bankaccounttype_as_choices()
    form.entity.choices = forms.get_entities_as_choices()

    if form.validate_on_submit():
        bankaccount = models.BankAccount(user_id=g.user.id)

        if form.bank.data:
            bankaccount.bank = form.bank.data

        if form.number.data:
            bankaccount.number = form.number.data

        if form.desc.data:
            bankaccount.desc = form.desc.data

        if form.bankaccounttype.data:
            bankaccount.bankaccounttype_id = form.bankaccounttype.data

        if form.entity.data:
            bankaccount.entity_id = form.entity.data

        models.db.session.add(bankaccount)
        models.db.session.commit()

        return redirect(url_for("bankaccounts.bankaccount", id=bankaccount.id))

    return render_template("bankaccount.html", form=form)