From d986461019cb7aa7ed64e1bf7355efd533fa3eae Mon Sep 17 00:00:00 2001 From: Sara Montecino Date: Mon, 31 Oct 2022 00:57:57 -0700 Subject: [PATCH] Add a bunch of fixes, categories - Go through and update database --- .vscode/launch.json | 7 +++- app.py | 47 +++++++++++++++++--------- budget.db | Bin 0 -> 94208 bytes capital_one.py | 11 ++++--- database.py | 9 +++++ main.py | 2 +- templates/index.html | 77 ++++++++++++++++++++++++++++++++++++++++--- todo.txt | 16 ++++----- 8 files changed, 135 insertions(+), 34 deletions(-) create mode 100755 budget.db diff --git a/.vscode/launch.json b/.vscode/launch.json index a4ddf99..5be0237 100755 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -11,7 +11,12 @@ "program": "main.py", "console": "integratedTerminal", "justMyCode": true, - "args": ["C:\\Users\\saram\\Downloads\\Statement_072022_4653.pdf"] + "args": [ + // "C:\\Users\\saram\\Downloads\\Statement_072022_4653.pdf", + // "C:\\Users\\saram\\Downloads\\Statement_082022_4653.pdf", + "C:\\Users\\saram\\Downloads\\Statement_092022_4653.pdf", + "C:\\Users\\saram\\Downloads\\Statement_102022_4653.pdf", + ] }, { "name": "Create Database", diff --git a/app.py b/app.py index e436922..da6dd6c 100755 --- a/app.py +++ b/app.py @@ -105,23 +105,40 @@ def transaction(uuid=None): # Default if no method is hit abort(400) -@app.route("/categories") +@app.route("/categories", methods=["GET", "POST"]) def categories(): - try: - raw_categories = database.TransactionCategory.select() - categories = {} - for category in raw_categories: - if not category.parent: - categories[category.name] = [] + if request.method == "GET": + try: + raw_categories = database.TransactionCategory.select() + categories = {} + for category in raw_categories: + if not category.parent: + categories[category.name] = [] - for category in raw_categories: - if category.parent: - categories[category.parent.name].append(category.name) + for category in raw_categories: + if category.parent: + categories[category.parent.name].append(category.name) - return categories - except peewee.DoesNotExist: - abort(404) - except: - abort(500) + return categories + except peewee.DoesNotExist: + abort(404) + except: + abort(500) + if request.method == "POST": + body = request.get_json() + try: + if 'parent' in body: + parent = database.TransactionCategory.get(database.TransactionCategory.name == body['parent']) + database.TransactionCategory.create(name=body['name'], parent=parent) + else: + database.TransactionCategory.create(name=body['name']) + return ('', 200) + except peewee.DoesNotExist: + abort(404) + except: + abort(500) + + # Should never get here. + abort(500) app.run() \ No newline at end of file diff --git a/budget.db b/budget.db new file mode 100755 index 0000000000000000000000000000000000000000..58e8bc565a6bed7dc23f015f9f5510fb49a85076 GIT binary patch literal 94208 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 literal 0 HcmV?d00001 diff --git a/capital_one.py b/capital_one.py index 513b28d..e7a1fe5 100755 --- a/capital_one.py +++ b/capital_one.py @@ -53,12 +53,15 @@ class Transactions(Regex): date = result[0] description = " ".join(result[1].split()) - is_payment = '-' in result[2] + is_credit = '-' in result[2] amount = float(result[3].replace(',', '')) - if is_payment: - print(f"Skipping payment: {amount}") - continue + if is_credit: + if "AUTOPAY" in description: + print(f"Skipping payment: {amount}") + continue + + amount *= -1 transactions.append([date, description, amount]) diff --git a/database.py b/database.py index 2d45cf4..5be8a4c 100755 --- a/database.py +++ b/database.py @@ -41,6 +41,15 @@ def add_default_categories(): for child in children: TransactionCategory.create(name=child, parent=parent_db) + +def delete_transactions(): + instance.connect() + # august_2022 = datetime.datetime(2022, 8, 18, 0) + # delete_query = Transaction.delete().where(Transaction.transaction_date > august_2022) + delete_query = Transaction.delete().where(Transaction.primary_key == 83) + delete_query.execute() + instance.close() + class BaseModel(Model): class Meta: database = instance diff --git a/main.py b/main.py index 9a0d7de..a45086f 100755 --- a/main.py +++ b/main.py @@ -34,7 +34,7 @@ for f in args.files: transaction_date=date, description=description, amount=amount, - source_filename=filename, + source_file=filename, type=file_parser.source ) database.instance.close() diff --git a/templates/index.html b/templates/index.html index 2b805b4..fb93f26 100755 --- a/templates/index.html +++ b/templates/index.html @@ -100,6 +100,12 @@ +

Add category

+ + + + +