Created demo
This commit is contained in:
parent
e8c15c1eff
commit
54b30f6f02
114
expenses_manager/expenses/management/commands/seed_demo.py
Normal file
114
expenses_manager/expenses/management/commands/seed_demo.py
Normal file
@ -0,0 +1,114 @@
|
||||
from datetime import date
|
||||
from decimal import Decimal
|
||||
from django.utils import timezone
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.core.management.base import BaseCommand
|
||||
|
||||
from expenses.models import Account, Category, Tag, Expense
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Seed demo data for development'
|
||||
|
||||
def handle(self, *args, **options):
|
||||
User = get_user_model()
|
||||
|
||||
user, created = User.objects.get_or_create(
|
||||
username='demo',
|
||||
defaults={'email':'demo@example.com'}
|
||||
)
|
||||
|
||||
if created:
|
||||
user.set_password('demo1234')
|
||||
user.save()
|
||||
user.is_staff = True
|
||||
user.is_superuser = True
|
||||
self.stdout.write(self.style.SUCCESS("Demo user created"))
|
||||
else:
|
||||
user.is_staff = True
|
||||
user.is_superuser = True
|
||||
self.stdout.write('Demo user exists!!')
|
||||
|
||||
# ------------------
|
||||
# Accounts
|
||||
# ------------------
|
||||
account, _ = Account.objects.get_or_create(
|
||||
owner=user,
|
||||
name="General",
|
||||
defaults={
|
||||
'initial_balance': Decimal('1500.00'),
|
||||
'active': True,
|
||||
},
|
||||
)
|
||||
|
||||
# ------------------
|
||||
# Categories
|
||||
# ------------------
|
||||
food, _ = Category.objects.get_or_create(
|
||||
owner=user,
|
||||
name='Food'
|
||||
)
|
||||
|
||||
rent, _ = Category.objects.get_or_create(
|
||||
owner=user,
|
||||
name='Rent'
|
||||
)
|
||||
|
||||
leisure, _ = Category.objects.get_or_create(
|
||||
owner=user,
|
||||
name='Leisure'
|
||||
)
|
||||
|
||||
# ------------------
|
||||
# Tags
|
||||
# ------------------
|
||||
supermarket, _ = Tag.objects.get_or_create(
|
||||
owner=user,
|
||||
name='Supermarket',
|
||||
)
|
||||
|
||||
recurring, _ = Tag.objects.get_or_create(
|
||||
owner=user,
|
||||
name='Recurring',
|
||||
)
|
||||
|
||||
# ------------------
|
||||
# Expenses
|
||||
# ------------------
|
||||
expenses_data = [
|
||||
{
|
||||
'category': food,
|
||||
'amount': Decimal('45.50'),
|
||||
'tags': [supermarket],
|
||||
},
|
||||
{
|
||||
'category': rent,
|
||||
'amount': Decimal('750.50'),
|
||||
'tags': [recurring],
|
||||
},
|
||||
{
|
||||
'category': leisure,
|
||||
'amount': Decimal('60.00'),
|
||||
'tags': [],
|
||||
},
|
||||
]
|
||||
|
||||
for idx, data in enumerate(expenses_data):
|
||||
expense, created = Expense.objects.get_or_create(
|
||||
owner=user,
|
||||
account=account,
|
||||
date=date.today().replace(day=min(10 + idx, 28)),
|
||||
category=data['category'],
|
||||
amount=data['amount']
|
||||
)
|
||||
|
||||
if created:
|
||||
expense.tags.set(data['tags'])
|
||||
self.stdout.write(f'Created expense: {expense.amount} €')
|
||||
else:
|
||||
self.stdout.write('Expense exist')
|
||||
|
||||
self.stdout.write(
|
||||
self.style.SUCCESS('Seed demos executed successfuly ✅')
|
||||
)
|
||||
|
||||
@ -0,0 +1,26 @@
|
||||
# Generated by Django 5.2.10 on 2026-02-01 12:25
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('expenses', '0002_alter_account_options_alter_category_unique_together_and_more'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='account',
|
||||
name='owner',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='accounts', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='category',
|
||||
name='owner',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='categories', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
||||
Loading…
Reference in New Issue
Block a user