From d59993286c3a631fe8c2679f928583d5c837fe5f Mon Sep 17 00:00:00 2001 From: Ameya Shenoy Date: Mon, 20 Mar 2023 12:52:26 +0530 Subject: [PATCH] feat: add logos and db populate script Signed-off-by: Ameya Shenoy --- .../management/commands/populatedb.py | 324 ++++++++++++++++++ backend/foldbank/models.py | 6 +- backend/media_cdn/images/bank_logos/axis.svg | 20 ++ .../media_cdn/images/bank_logos/foldlogo.svg | 4 + backend/media_cdn/images/bank_logos/hdfc.svg | 18 + backend/media_cdn/images/bank_logos/icici.svg | 15 + backend/media_cdn/images/bank_logos/sbi.svg | 1 + 7 files changed, 386 insertions(+), 2 deletions(-) create mode 100644 backend/foldbank/management/commands/populatedb.py create mode 100644 backend/media_cdn/images/bank_logos/axis.svg create mode 100644 backend/media_cdn/images/bank_logos/foldlogo.svg create mode 100644 backend/media_cdn/images/bank_logos/hdfc.svg create mode 100644 backend/media_cdn/images/bank_logos/icici.svg create mode 100644 backend/media_cdn/images/bank_logos/sbi.svg diff --git a/backend/foldbank/management/commands/populatedb.py b/backend/foldbank/management/commands/populatedb.py new file mode 100644 index 0000000..6bd83aa --- /dev/null +++ b/backend/foldbank/management/commands/populatedb.py @@ -0,0 +1,324 @@ +# standard imports +import datetime + +# third-party imports +from django.utils.timezone import make_aware +from django.core.management.base import BaseCommand + +# app imports +from foldbank.models import User, Tag, Account, Bank, RecurringPayment, Transaction + + +class Command(BaseCommand): + help = "populate the database with mock data on a clean instance for easier testing" + + def handle(self, *args, **options): + + # users + if User.objects.filter(username="admin").exists(): + admin = User.objects.get(username="admin") + else: + admin = User.objects.create_superuser( + "admin", + password="password", + ) + nishant, _ = User.objects.get_or_create( + username="nishant", + defaults={ + "name": "Nishant Verma", + "password": "password", + } + ) + + # tags + tags = [ + { + "title": "Rent", + "sub_category": "", + "icon_type": "rent", + }, + { + "title": "Subscription", + "sub_category": "YouTube", + "icon_type": "youtube", + }, + { + "title": "Tag", + "sub_category": "", + "icon_type": "", + }, + { + "title": "Food & Drinks", + "sub_category": "Swiggy", + "icon_type": "swiggy", + }, + { + "title": "Food & Drinks", + "sub_category": "Food", + "icon_type": "food", + }, + { + "title": "Food & Drinks", + "sub_category": "Drink", + "icon_type": "drink", + }, + { + "title": "Groceries", + "sub_category": "", + "icon_type": "groceries", + }, + { + "title": "Transport", + "sub_category": "", + "icon_type": "transport", + }, + { + "title": "Subscription", + "sub_category": "Netflix", + "icon_type": "netflix", + }, + ] + for tag in tags: + Tag.objects.get_or_create(**tag) + + # banks + banks = [ + { + "name": "HDFC Bank", + "defaults": { + "logo": "images/bank_logos/hdfc.svg", + }, + }, + { + "name": "Axis Bank", + "defaults": { + "logo": "images/bank_logos/axis.svg", + }, + }, + { + "name": "State Bank of India", + "defaults": { + "logo": "images/bank_logos/sbi.svg", + }, + }, + { + "name": "ICICI Bank", + "defaults": { + "logo": "images/bank_logos/icici.svg", + }, + }, + ] + for bank in banks: + Bank.objects.get_or_create(**bank) + + + # accounts + accounts = [ + { + "user": nishant, + "bank": Bank.objects.get(name="Axis Bank"), + "account_number": "34536896852", + "account_type": "SA", + "ifsc_code": "AXIS0006586", + "swift_bic": "6895206BB", + "holders_name": "Nishant Verma", + "account_owner_type": "UA", + "balance": "55410", + }, + { + "user": nishant, + "bank": Bank.objects.get(name="HDFC Bank"), + "account_number": "92531805286", + "account_type": "SA", + "ifsc_code": "HDFC0002233", + "swift_bic": "HDFCINBBBNG", + "holders_name": "Nishant Verma", + "account_owner_type": "UA", + "balance": "258630", + }, + { + "user": nishant, + "bank": Bank.objects.get(name="State Bank of India"), + "account_number": "34536896852", + "account_type": "SA", + "ifsc_code": "SBIN0006586", + "swift_bic": "6895106BB", + "holders_name": "Nishant Verma", + "account_owner_type": "UA", + "balance": "27932", + }, + { + "user": nishant, + "bank": Bank.objects.get(name="ICICI Bank"), + "account_number": "34536896852", + "account_type": "SA", + "ifsc_code": "ICIC0006586", + "swift_bic": "6895306BB", + "holders_name": "Nishant Verma", + "account_owner_type": "UA", + "balance": "7932", + }, + { + "user": admin, + "bank": Bank.objects.get(name="ICICI Bank"), + "account_type": "CA", + "holders_name": "Swiggy", + "account_owner_type": "OA", + }, + { + "user": admin, + "bank": Bank.objects.get(name="ICICI Bank"), + "account_type": "CA", + "holders_name": "2586 Rent", + "account_owner_type": "OA", + }, + { + "user": admin, + "bank": Bank.objects.get(name="ICICI Bank"), + "account_type": "CA", + "holders_name": "YouTube Premium", + "account_owner_type": "OA", + }, + { + "user": admin, + "bank": Bank.objects.get(name="ICICI Bank"), + "account_type": "CA", + "holders_name": "Fenny's Bangalore", + "account_owner_type": "OA", + }, + { + "user": admin, + "bank": Bank.objects.get(name="ICICI Bank"), + "account_type": "CA", + "holders_name": "Sendhoor", + "account_owner_type": "OA", + }, + { + "user": admin, + "bank": Bank.objects.get(name="ICICI Bank"), + "account_type": "CA", + "holders_name": "Reliance Fresh", + "account_owner_type": "OA", + }, + { + "user": admin, + "bank": Bank.objects.get(name="ICICI Bank"), + "account_type": "CA", + "holders_name": "Chai Point", + "account_owner_type": "OA", + }, + { + "user": admin, + "bank": Bank.objects.get(name="ICICI Bank"), + "account_type": "CA", + "holders_name": "Uber", + "account_owner_type": "OA", + }, + { + "user": admin, + "bank": Bank.objects.get(name="ICICI Bank"), + "account_type": "CA", + "holders_name": "Netflix", + "account_owner_type": "OA", + }, + ] + for account in accounts: + Account.objects.get_or_create(**account) + + # recurring payment + recurring_payments = [ + { + "from_account": Account.objects.get(user=nishant, bank=Bank.objects.get(name="Axis Bank")), + "to_account": Account.objects.get(user=admin, holders_name="2586 Rent"), + "amount": "36031", + "tag": Tag.objects.get(title="Rent"), + "defaults": { + "created_at": make_aware(datetime.datetime(year=2023, month=1, day=23)), + "frequency": datetime.timedelta(days=30), + "due_on": make_aware(datetime.datetime(year=2023, month=1, day=23)), + }, + }, + { + "from_account": Account.objects.get(user=nishant, bank=Bank.objects.get(name="Axis Bank")), + "to_account": Account.objects.get(user=admin, holders_name="YouTube Premium"), + "amount": "36031", + "tag": Tag.objects.get(title="Rent"), + "defaults": { + "created_at": make_aware(datetime.datetime(year=2023, month=1, day=20)), + "frequency": datetime.timedelta(days=30), + "due_on": make_aware(datetime.datetime(year=2023, month=2, day=19)), + } + }, + ] + for rp in recurring_payments: + RecurringPayment.objects.get_or_create(**rp) + + # transactions + transactions = [ + { + "from_account": Account.objects.get(user=nishant, bank=Bank.objects.get(name="Axis Bank")), + "to_account": Account.objects.get(user=admin, holders_name="Fenny's Bangalore"), + "amount": "3940", + "tag": Tag.objects.get(title="Tag"), + "defaults": { + "created_at": make_aware(datetime.datetime(year=2023, month=1, day=23, hour=11, minute=17)), + } + }, + { + "from_account": Account.objects.get(user=nishant, bank=Bank.objects.get(name="Axis Bank")), + "to_account": Account.objects.get(user=admin, holders_name="Sendhoor"), + "amount": "35", + "tag": Tag.objects.get(title="Food & Drinks", sub_category="Drink"), + "defaults": { + "created_at": make_aware(datetime.datetime(year=2023, month=1, day=23, hour=23, minute=45)), + } + }, + { + "from_account": Account.objects.get(user=nishant, bank=Bank.objects.get(name="Axis Bank")), + "to_account": Account.objects.get(user=admin, holders_name="Reliance Fresh"), + "amount": "2399", + "tag": Tag.objects.get(title="Groceries"), + "defaults": { + "created_at": make_aware(datetime.datetime(year=2023, month=1, day=23, hour=5, minute=37)), + } + }, + { + "from_account": Account.objects.get(user=nishant, bank=Bank.objects.get(name="Axis Bank")), + "to_account": Account.objects.get(user=admin, holders_name="Chai Point"), + "amount": "312", + "tag": Tag.objects.get(title="Food & Drinks", sub_category="Food"), + "defaults": { + "created_at": make_aware(datetime.datetime(year=2023, month=1, day=23, hour=12, minute=17)), + } + }, + { + "from_account": Account.objects.get(user=nishant, bank=Bank.objects.get(name="Axis Bank")), + "to_account": Account.objects.get(user=admin, holders_name="Uber"), + "amount": "75", + "tag": Tag.objects.get(title="Transport"), + "defaults": { + "created_at": make_aware(datetime.datetime(year=2023, month=1, day=2, hour=10, minute=32)), + } + }, + { + "from_account": Account.objects.get(user=nishant, bank=Bank.objects.get(name="Axis Bank")), + "to_account": Account.objects.get(user=admin, holders_name="Swiggy"), + "amount": "35", + "tag": Tag.objects.get(title="Food & Drinks", sub_category="Swiggy"), + "defaults": { + "created_at": make_aware(datetime.datetime(year=2023, month=1, day=1, hour=11, minute=17)), + } + }, + { + "from_account": Account.objects.get(user=nishant, bank=Bank.objects.get(name="Axis Bank")), + "to_account": Account.objects.get(user=admin, holders_name="Netflix"), + "amount": "35", + "tag": Tag.objects.get(title="Subscription", sub_category="Netflix"), + "defaults": { + "created_at": make_aware(datetime.datetime(year=2023, month=1, day=23, hour=23, minute=45)), + } + }, + ] + for t in transactions: + Transaction.objects.get_or_create(**t) + diff --git a/backend/foldbank/models.py b/backend/foldbank/models.py index 3ec0229..d106963 100644 --- a/backend/foldbank/models.py +++ b/backend/foldbank/models.py @@ -77,8 +77,10 @@ class Tag(models.Model): created_at = models.DateTimeField(auto_now_add=True) def __str__(self): - return f"{self.title} - {self.sub_category}" - + ret = self.title + if self.sub_category: + ret += f" - {self.sub_category}" + return ret class Bank(models.Model): diff --git a/backend/media_cdn/images/bank_logos/axis.svg b/backend/media_cdn/images/bank_logos/axis.svg new file mode 100644 index 0000000..af1d07a --- /dev/null +++ b/backend/media_cdn/images/bank_logos/axis.svg @@ -0,0 +1,20 @@ + + AXISBank_Logo-svg (2)-svg + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/backend/media_cdn/images/bank_logos/foldlogo.svg b/backend/media_cdn/images/bank_logos/foldlogo.svg new file mode 100644 index 0000000..e7d35ff --- /dev/null +++ b/backend/media_cdn/images/bank_logos/foldlogo.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/backend/media_cdn/images/bank_logos/hdfc.svg b/backend/media_cdn/images/bank_logos/hdfc.svg new file mode 100644 index 0000000..f5f850f --- /dev/null +++ b/backend/media_cdn/images/bank_logos/hdfc.svg @@ -0,0 +1,18 @@ + + HDFC_Bank_Logo-svg + + + + + + + + + + + \ No newline at end of file diff --git a/backend/media_cdn/images/bank_logos/icici.svg b/backend/media_cdn/images/bank_logos/icici.svg new file mode 100644 index 0000000..dedadf5 --- /dev/null +++ b/backend/media_cdn/images/bank_logos/icici.svg @@ -0,0 +1,15 @@ + + ICICI_Bank_Logo-svg + + + + + + + + + \ No newline at end of file diff --git a/backend/media_cdn/images/bank_logos/sbi.svg b/backend/media_cdn/images/bank_logos/sbi.svg new file mode 100644 index 0000000..ceb49ac --- /dev/null +++ b/backend/media_cdn/images/bank_logos/sbi.svg @@ -0,0 +1 @@ + \ No newline at end of file