Compare commits
3 Commits
ed2dda63e9
...
5af05c2fa4
| Author | SHA1 | Date | |
|---|---|---|---|
| 5af05c2fa4 | |||
| 2cbf00a939 | |||
| 6b26651d22 |
@ -25,6 +25,12 @@ if __name__ == "__main__":
|
|||||||
Interactive(Manager(db, verbosity)).start()
|
Interactive(Manager(db, verbosity)).start()
|
||||||
exit()
|
exit()
|
||||||
|
|
||||||
|
case Operation.Categorize:
|
||||||
|
keys = {"no_nulls"}
|
||||||
|
assert args.keys() >= keys, f"missing {args.keys() - keys}"
|
||||||
|
|
||||||
|
params = [args["no_nulls"]]
|
||||||
|
|
||||||
case Operation.Parse:
|
case Operation.Parse:
|
||||||
keys = {"path", "bank", "creditcard"}
|
keys = {"path", "bank", "creditcard"}
|
||||||
assert args.keys() >= keys, f"missing {args.keys() - keys}"
|
assert args.keys() >= keys, f"missing {args.keys() - keys}"
|
||||||
|
|||||||
@ -78,7 +78,10 @@ def argparser() -> argparse.ArgumentParser:
|
|||||||
|
|
||||||
# Automatic/manual categorization
|
# Automatic/manual categorization
|
||||||
categorize = subparsers.add_parser("categorize").add_subparsers(required=True)
|
categorize = subparsers.add_parser("categorize").add_subparsers(required=True)
|
||||||
categorize.add_parser("auto").set_defaults(op=Operation.Categorize)
|
auto = categorize.add_parser("auto")
|
||||||
|
auto.set_defaults(op=Operation.Categorize)
|
||||||
|
auto.add_argument("--no-nulls", action="store_false")
|
||||||
|
|
||||||
categorize.add_parser("manual").set_defaults(op=Operation.ManualCategorization)
|
categorize.add_parser("manual").set_defaults(op=Operation.ManualCategorization)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@ -129,7 +132,7 @@ def argparser() -> argparse.ArgumentParser:
|
|||||||
# Nordigen requisition id
|
# Nordigen requisition id
|
||||||
requisition = subparsers.add_parser("eua")
|
requisition = subparsers.add_parser("eua")
|
||||||
requisition.set_defaults(op=Operation.RequisitionId)
|
requisition.set_defaults(op=Operation.RequisitionId)
|
||||||
requisition.add_argument("name", nargs=1, type=str)
|
requisition.add_argument("id", nargs=1, type=str)
|
||||||
requisition.add_argument("country", nargs=1, type=str)
|
requisition.add_argument("country", nargs=1, type=str)
|
||||||
|
|
||||||
# Download through the Nordigen API
|
# Download through the Nordigen API
|
||||||
|
|||||||
@ -16,6 +16,7 @@ class Categorizer:
|
|||||||
transactions: Sequence[t.BankTransaction],
|
transactions: Sequence[t.BankTransaction],
|
||||||
categories: Sequence[t.Category],
|
categories: Sequence[t.Category],
|
||||||
tags: Sequence[t.Tag],
|
tags: Sequence[t.Tag],
|
||||||
|
nullify: bool = True
|
||||||
):
|
):
|
||||||
"""Overarching categorization tool
|
"""Overarching categorization tool
|
||||||
|
|
||||||
@ -28,14 +29,16 @@ class Categorizer:
|
|||||||
tags (Sequence[Tag]): currently available tags
|
tags (Sequence[Tag]): currently available tags
|
||||||
"""
|
"""
|
||||||
|
|
||||||
try:
|
if nullify:
|
||||||
null = next(cat for cat in categories if cat.name == "null")
|
try:
|
||||||
print("Nullifying")
|
null = next(cat for cat in categories if cat.name == "null")
|
||||||
self._nullify(transactions, null)
|
print("Nullifying")
|
||||||
|
self._nullify(transactions, null)
|
||||||
|
|
||||||
categories = [cat for cat in categories if cat.name != "null"]
|
except StopIteration:
|
||||||
except StopIteration:
|
print("Null category not defined")
|
||||||
print("Null category not defined")
|
|
||||||
|
categories = [cat for cat in categories if cat.name != "null"]
|
||||||
|
|
||||||
self._rule_based_categories(transactions, categories)
|
self._rule_based_categories(transactions, categories)
|
||||||
self._rule_based_tags(transactions, tags)
|
self._rule_based_tags(transactions, tags)
|
||||||
|
|||||||
@ -97,7 +97,7 @@ class Manager:
|
|||||||
)
|
)
|
||||||
categories = session.get(Category)
|
categories = session.get(Category)
|
||||||
tags = session.get(Tag)
|
tags = session.get(Tag)
|
||||||
Categorizer().rules(uncategorized, categories, tags)
|
Categorizer().rules(uncategorized, categories, tags, params[0])
|
||||||
|
|
||||||
case Operation.BankMod:
|
case Operation.BankMod:
|
||||||
with self.db.session() as session:
|
with self.db.session() as session:
|
||||||
|
|||||||
@ -106,6 +106,7 @@ class Transaction(Base, Export):
|
|||||||
@property
|
@property
|
||||||
def format(self) -> dict[str, Any]:
|
def format(self) -> dict[str, Any]:
|
||||||
return dict(
|
return dict(
|
||||||
|
id=self.id,
|
||||||
date=self.date,
|
date=self.date,
|
||||||
description=self.description,
|
description=self.description,
|
||||||
amount=self.amount,
|
amount=self.amount,
|
||||||
|
|||||||
@ -86,8 +86,7 @@ class NordigenInput(Input):
|
|||||||
print(f"New access token: {token}")
|
print(f"New access token: {token}")
|
||||||
return token
|
return token
|
||||||
|
|
||||||
def requisition(self, institution: str, country: str = "PT"):
|
def requisition(self, id: str, country: str = "PT"):
|
||||||
id = self._client.institution.get_institution_id_by_name(country, institution)
|
|
||||||
requisition = self._client.initialize_session(
|
requisition = self._client.initialize_session(
|
||||||
redirect_uri=self.redirect_url,
|
redirect_uri=self.redirect_url,
|
||||||
institution_id=id,
|
institution_id=id,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user