You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.1 KiB
67 lines
2.1 KiB
"""superx_budget |
|
|
|
Creating a budget overview from a SuperX export |
|
""" |
|
|
|
__version__ = "0.0.1" |
|
|
|
import argparse |
|
import pathlib |
|
import sys |
|
import warnings |
|
|
|
from .budget import parse_budget_file |
|
from .exceptions import BudgetParserError, SuperXParserError # noqa: F401 |
|
from .helpers import ( # noqa: F401 |
|
find_budget_file, |
|
find_recipients, |
|
get_sheet_of_file, |
|
is_budget_file_name, |
|
list_budget_files, |
|
) |
|
from .overview import create_overview |
|
from .pyramid import main # noqa: F401 |
|
from .superx import parse_exported_file # noqa: F401 |
|
|
|
|
|
def cli_parse_exported_file(): |
|
parser = argparse.ArgumentParser( |
|
prog="SuperxParserTest", |
|
description="Try to parse a file exported from SuperX", |
|
) |
|
parser.add_argument("filename") |
|
args = parser.parse_args() |
|
|
|
with warnings.catch_warnings(action="ignore"): |
|
sys.stderr.write(f"trying to read '{args.filename}'\n") |
|
exported = superx.parse_exported_file(pathlib.Path(args.filename)) |
|
sys.stderr.write("... OK\n") |
|
|
|
sys.stderr.write( |
|
f"searching budget file for year '{exported.account_year}'\n" |
|
) |
|
budget_dir = pathlib.Path(__file__).parent.parent / "budgets" |
|
budget_file = find_budget_file(budget_dir, exported.account_year) |
|
if not budget_file: |
|
sys.exit("... no budget file found") |
|
sys.stderr.write(f"... found '{budget_file}'\n") |
|
|
|
sys.stderr.write(f"parsing budget file '{budget_file}'\n") |
|
budget_data = parse_budget_file(budget_file) |
|
sys.stderr.write("... OK\n") |
|
|
|
sys.stderr.write("Creating overview\n") |
|
overview_map = create_overview(budget_data, exported) |
|
sys.stderr.write("... OK\n") |
|
|
|
sys.stderr.write("Sorting overview\n") |
|
overview = sorted(overview_map.values(), key=lambda i: i.row) |
|
sys.stderr.write("... OK\n") |
|
|
|
sys.stderr.write("Geting recipients file\n") |
|
recipients = find_recipients(budget_dir) |
|
sys.stderr.write("... OK\n") |
|
|
|
sys.stderr.write("Retrieving sheet for export\n") |
|
sheet = get_sheet_of_file(budget_file) |
|
sys.stderr.write("... OK\n")
|
|
|