summary history files

web/penny/resources/data/reports/controllers.py
from penny import models
from flask import Blueprint, g, jsonify, url_for
from flask_security import auth_required

data_reports = Blueprint("data_reports", __name__, url_prefix="/data/reports")


@data_reports.route("/")
@auth_required()
def reports():
    """Return a list of reports"""

    data = {"rows": []}

    data["rows"].extend(
        [
            {
                "report_url": '<a href="{0}">Account Monthly Breakdown<a>'.format(
                    url_for("reports.account_monthly_breakdown")
                )
            },
            {
                "report_url": '<a href="{0}">Tag Monthly Breakdown<a>'.format(
                    url_for("reports.tag_monthly_breakdown")
                )
            },
            {
                "report_url": '<a href="{0}">Monthly Savings Rate for the past 3 years<a>'.format(
                    url_for("reports.savings_rate")
                )
            }
        ]
    )

    # Add entity reports
    for entity in (
        models.db.session.query(models.Entity)
        .filter_by(user_id=g.user.id)
        .order_by(models.Entity.name)
    ):
        report_url = url_for(
            "reports.profitloss", id=entity.id, report_resource="entity"
        )
        report_name = "{0} Profit & Loss".format(entity.name)
        data["rows"].append(
            {"report_url": '<a href="{0}">{1}</a>'.format(report_url, report_name)}
        )

    # Add bankaccount reports
    for bankaccount in (
        models.db.session.query(models.BankAccount)
        .filter_by(user_id=g.user.id)
        .order_by(models.BankAccount.bank)
    ):
        report_url = url_for(
            "reports.profitloss", id=bankaccount.id, report_resource="bankaccount"
        )
        report_name = "{0.bank} {0.number} Profit & Loss".format(bankaccount)
        data["rows"].append(
            {"report_url": '<a href="{0}">{1}</a>'.format(report_url, report_name)}
        )

    data["total"] = len(data["rows"])

    return jsonify(data)