feat: add logos and db populate script
Signed-off-by: Ameya Shenoy <shenoy.ameya@gmail.com>
This commit is contained in:
parent
6bb49337c3
commit
d59993286c
7 changed files with 386 additions and 2 deletions
324
backend/foldbank/management/commands/populatedb.py
Normal file
324
backend/foldbank/management/commands/populatedb.py
Normal file
|
|
@ -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)
|
||||
|
||||
|
|
@ -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):
|
||||
|
|
|
|||
20
backend/media_cdn/images/bank_logos/axis.svg
Normal file
20
backend/media_cdn/images/bank_logos/axis.svg
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1552 1346" width="1552" height="1346">
|
||||
<title>AXISBank_Logo-svg (2)-svg</title>
|
||||
<style>
|
||||
.s0 { fill: #97144d }
|
||||
</style>
|
||||
<g id="layer1">
|
||||
<g id="g870">
|
||||
<g id="Clip-Path: g872">
|
||||
<g id="g872">
|
||||
<g id="g878">
|
||||
<path id="path880" class="s0" d="m1551.8 1345.7h-482.5l-293-511.2h482.5z"/>
|
||||
</g>
|
||||
<g id="g882">
|
||||
<path id="path884" class="s0" d="m774.5 0.2l242 416.4-534.5 929.1h-481.7z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 530 B |
4
backend/media_cdn/images/bank_logos/foldlogo.svg
Normal file
4
backend/media_cdn/images/bank_logos/foldlogo.svg
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="125" height="125" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M102.136 78.744c.192-.408.351-.777.478-1.092a42.862 42.862 0 002.771-15.212c0-11.464-4.484-21.872-11.801-29.578a43.226 43.226 0 00-6.37-5.518c.411 3.295-.358 6.575-1.574 9.564-.727 1.786-1.678 3.616-2.718 5.424 1.812 1.957 3.733 4.198 5.277 6.937 2.2 3.904 3.579 8.66 3.579 15.125 0 6.704-1.962 11.846-5.018 16.03-1.81 2.48-3.974 4.572-6.194 6.422 1.265.608 2.708 1.095 4.354 1.431 6.97 1.423 11.28-1.371 14.075-4.62 1.45-1.686 2.476-3.498 3.141-4.913z" fill="#CAD1E1"/><path
|
||||
fill="#20294C"
|
||||
fill-rule="evenodd" clip-rule="evenodd" d="M13.653 48.351C19.778 27.192 39.295 11.72 62.435 11.72c14.5 0 27.585 6.082 36.834 15.823 8.641 9.1 13.947 21.413 13.947 34.957a50.72 50.72 0 01-2.723 16.449l-.008.026-.05.154a25.065 25.065 0 01-.483 1.324c-7.252 19.187-25.79 32.829-47.517 32.829-21.93 0-40.605-13.9-47.711-33.358l-.02-.052-.017-.052c-3.374-10.123-4.08-20.948-1.034-31.468zm88.98 29.36c-.127.315-.286.684-.478 1.093-.665 1.414-1.691 3.226-3.14 4.912-2.797 3.25-7.106 6.043-14.076 4.62-1.646-.335-3.089-.822-4.353-1.43 2.22-1.85 4.383-3.943 6.193-6.423 3.056-4.183 5.018-9.326 5.018-16.03 0-6.464-1.379-11.22-3.58-15.124-1.543-2.74-3.464-4.98-5.275-6.938 1.04-1.808 1.99-3.637 2.717-5.424 1.216-2.988 1.985-6.268 1.573-9.564a43.236 43.236 0 016.37 5.518h.001c7.317 7.706 11.801 18.114 11.801 29.578 0 5.357-.98 10.484-2.771 15.213zM62.4 19.532c-19.555.016-36.062 13.096-41.243 30.993-2.538 8.767-2.009 17.942.924 26.771 6.031 16.448 21.828 28.174 40.354 28.174a42.782 42.782 0 0026.235-8.936c-1.657.01-3.42-.16-5.294-.542-5.865-1.197-10.384-3.943-13.576-7.785-3.156-3.8-4.83-8.446-5.452-13.207-1.23-9.417 1.553-19.951 6.288-27.595.836-1.37 1.67-2.68 2.475-3.945 2.138-3.356 4.074-6.396 5.312-9.437 1.594-3.916 1.509-6.604-.477-9.005-3.192-3.86-9.013-5.363-15.546-5.486zm16.253 29.785c1.047 1.22 1.967 2.443 2.759 3.849 1.478 2.621 2.572 6.034 2.572 11.288 0 5.015-1.415 8.55-3.513 11.422-1.55 2.123-3.518 3.951-5.795 5.766-1.345-2.154-2.202-4.746-2.582-7.654-.968-7.411 1.273-16.161 5.19-22.48l.015-.024c.424-.697.88-1.42 1.354-2.167z" /></svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
18
backend/media_cdn/images/bank_logos/hdfc.svg
Normal file
18
backend/media_cdn/images/bank_logos/hdfc.svg
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<svg version="1.2" baseProfile="tiny-ps" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1679 1678" width="1679" height="1678">
|
||||
<title>HDFC_Bank_Logo-svg</title>
|
||||
<style>
|
||||
tspan { white-space:pre }
|
||||
.shp0 { fill: #ed232a }
|
||||
.shp1 { fill: #ffffff }
|
||||
.shp2 { fill: #004c8f }
|
||||
</style>
|
||||
<g id="layer1">
|
||||
<g id="g11008">
|
||||
<path id="path1576" class="shp0" d="M0.51 0.83L1678.51 0.83L1678.51 1677.6L0.51 1677.6L0.51 0.83Z" />
|
||||
<path id="path1578" class="shp1" d="M294.21 294.31L1385.02 294.31L1385.02 1384.33L294.21 1384.33L294.21 294.31Z" />
|
||||
<path id="path1580" class="shp1" d="M755.64 0.83L923.38 0.83L923.38 1677.6L755.64 1677.6L755.64 0.83Z" />
|
||||
<path id="path1582" class="shp1" d="M0.51 755.62L1678.51 755.62L1678.51 923.23L0.51 923.23L0.51 755.62Z" />
|
||||
<path id="path1584" class="shp2" d="M587.91 587.79L1091.33 587.79L1091.33 1090.84L587.91 1090.84L587.91 587.79Z" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 908 B |
15
backend/media_cdn/images/bank_logos/icici.svg
Normal file
15
backend/media_cdn/images/bank_logos/icici.svg
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1388 1505" width="1388" height="1505">
|
||||
<title>ICICI_Bank_Logo-svg</title>
|
||||
<style>
|
||||
.s0 { fill: #f06321 }
|
||||
.s1 { fill: #ae282e }
|
||||
.s2 { fill: #ffffff }
|
||||
</style>
|
||||
<g id="layer1">
|
||||
<g id="g651">
|
||||
<path id="path160" class="s0" d="m393.4 327.4c343-340.8 759.2-429.2 925.7-197 166.6 232.3 20.2 701.7-322.8 1042.4-343.1 343.2-759.2 431.5-928.3 196.8-163.9-234.7-17.5-701.7 325.4-1042.2z"/>
|
||||
<path id="path162" class="s1" d="m1319.1 130.4c58 85.8 75.7 199.5 63.1 328.1-45.4 174.1-156.4 361-322.9 522.4-307.7 300.4-676 376.1-829.8 171.7-148.9-204.5-22.7-613.3 277.5-911 37.8-35.5 75.6-68.3 113.5-96 285-181.8 567.5-196.8 698.6-15.2z"/>
|
||||
<path id="path164" class="s2" d="m1054.3 183.4v7.6c-2.6 42.9-27.8 95.9-73.2 141.3-68 65.6-158.8 90.8-196.8 53.1-42.8-40.4-17.5-128.8 50.6-199.5 70.6-68.1 161.4-90.8 199.2-50.4 12.6 12.6 20.2 27.7 20.2 47.9zm-262.3 1158.4c-161.5 121.1-327.9 181.8-489.4 156.6 68.1 2.5 123.7-73.3 169.1-174.2 45.4-103.5 70.6-199.3 93.3-290.3 32.8-143.8 35.3-244.7 17.6-267.4-27.7-35.5-88.2-27.8-158.9 12.6-35.3 20.2-80.7 7.6-27.6-58 55.4-65.6 269.7-222.2 345.4-247.4 85.8-22.7 181.6 10.1 148.9 103.4-22.9 68.1-320.4 845.5-98.4 764.7z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
1
backend/media_cdn/images/bank_logos/sbi.svg
Normal file
1
backend/media_cdn/images/bank_logos/sbi.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="2499" height="2500" viewBox="0 -0.06 499.999 500.119"><path d="M499.999 250c.033 138.071-111.869 250.026-249.94 250.06C111.989 500.092.032 388.189 0 250.118V250C-.033 111.929 111.869-.026 249.941-.06 388.012-.092 499.967 111.81 500 249.881l-.001.119z" fill="#156dd1"/><path d="M295 250c0 24.853-20.147 45-45 45-24.854 0-45-20.147-45-45s20.146-45 45-45c24.853 0 45 20.147 45 45z" fill="#fff"/><path fill="#fff" d="M234.483 282.756h31.035V500h-31.035z"/></svg>
|
||||
|
After Width: | Height: | Size: 505 B |
Loading…
Reference in a new issue