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