Adds --save option to graph command

By passing the --save option the create graph is saved to a graph.png
file.
Entire argument dictionary passed to graph function.
This commit is contained in:
Luís Murta 2021-07-07 22:22:24 +01:00
parent 35f6d46199
commit 0f5123d91e
Signed by: satprog
GPG Key ID: DDF2EFC6179009DC
2 changed files with 17 additions and 6 deletions

View File

@ -12,7 +12,9 @@ if TYPE_CHECKING:
from pfbudget.database import DBManager from pfbudget.database import DBManager
def monthly(db: DBManager, start: dt.date = dt.date.min, end: dt.date = dt.date.max): def monthly(
db: DBManager, args: dict, start: dt.date = dt.date.min, end: dt.date = dt.date.max
):
transactions = db.get_daterange(start, end) transactions = db.get_daterange(start, end)
start, end = transactions[0].date, transactions[-1].date start, end = transactions[0].date, transactions[-1].date
monthly_transactions = tuple( monthly_transactions = tuple(
@ -59,10 +61,15 @@ def monthly(db: DBManager, start: dt.date = dt.date.min, end: dt.date = dt.date.
) )
plt.legend(loc="upper left") plt.legend(loc="upper left")
plt.tight_layout() plt.tight_layout()
plt.savefig("graph.png") if args["save"]:
plt.savefig("graph.png")
else:
plt.show()
def discrete(db: DBManager, start: dt.date = dt.date.min, end: dt.date = dt.date.max): def discrete(
db: DBManager, args: dict, start: dt.date = dt.date.min, end: dt.date = dt.date.max
):
transactions = db.get_daterange(start, end) transactions = db.get_daterange(start, end)
start, end = transactions[0].date, transactions[-1].date start, end = transactions[0].date, transactions[-1].date
monthly_transactions = tuple( monthly_transactions = tuple(
@ -118,4 +125,7 @@ def discrete(db: DBManager, start: dt.date = dt.date.min, end: dt.date = dt.date
) )
plt.legend(loc="upper left") plt.legend(loc="upper left")
plt.tight_layout() plt.tight_layout()
plt.savefig("graph.png") if args["save"]:
plt.savefig("graph.png")
else:
plt.show()

View File

@ -89,6 +89,7 @@ def argparser() -> argparse.ArgumentParser:
default="monthly", default="monthly",
help="graph option help", help="graph option help",
) )
p_graph.add_argument("--save", action="store_true")
p_graph.set_defaults(func=graph) p_graph.set_defaults(func=graph)
""" """
@ -126,9 +127,9 @@ def graph(args):
""" """
start, end = pfbudget.utils.parse_args_period(args) start, end = pfbudget.utils.parse_args_period(args)
if args.option == "monthly": if args.option == "monthly":
pfbudget.graph.monthly(DBManager(args.database), start, end) pfbudget.graph.monthly(DBManager(args.database), vars(args), start, end)
elif args.option == "discrete": elif args.option == "discrete":
pfbudget.graph.discrete(DBManager(args.database), start, end) pfbudget.graph.discrete(DBManager(args.database), vars(args), start, end)
def report(args): def report(args):