# Generated by Django 6.0.4 on 2026-05-18 20:16 import django.db.models.deletion from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ('finance', '0018_profile_savings_rate_goal'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Household', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('created_at', models.DateTimeField(auto_now_add=True)), ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='created_households', to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='FinancialYear', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('year', models.PositiveSmallIntegerField()), ('is_active', models.BooleanField(default=True)), ('notes', models.TextField(blank=True, default='')), ('created_at', models.DateTimeField(auto_now_add=True)), ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='financial_years', to=settings.AUTH_USER_MODEL)), ('household', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='financial_years', to='finance.household')), ], ), migrations.CreateModel( name='HouseholdMembership', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('status', models.CharField(choices=[('pending', 'Pending'), ('active', 'Active'), ('left', 'Left')], default='pending', max_length=10)), ('effective_from_year', models.PositiveSmallIntegerField(blank=True, null=True)), ('effective_until_year', models.PositiveSmallIntegerField(blank=True, null=True)), ('created_at', models.DateTimeField(auto_now_add=True)), ('household', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='memberships', to='finance.household')), ('invited_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='sent_invitations', to=settings.AUTH_USER_MODEL)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='household_memberships', to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='YearlyBudgetItem', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('amount', models.DecimalField(decimal_places=2, max_digits=12)), ('active', models.BooleanField(default=True)), ('notes', models.TextField(blank=True, default='')), ('financial_year', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='budget_items', to='finance.financialyear')), ], ), migrations.CreateModel( name='YearlyIncome', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('amount', models.DecimalField(decimal_places=2, max_digits=12)), ('active', models.BooleanField(default=True)), ('notes', models.TextField(blank=True, default='')), ('financial_year', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='incomes', to='finance.financialyear')), ('member', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='yearly_incomes', to=settings.AUTH_USER_MODEL)), ], ), migrations.AddConstraint( model_name='financialyear', constraint=models.CheckConstraint(condition=models.Q(models.Q(('household__isnull', True), ('user__isnull', False)), models.Q(('household__isnull', False), ('user__isnull', True)), _connector='OR'), name='financial_year_owner_exclusive'), ), migrations.AddConstraint( model_name='financialyear', constraint=models.UniqueConstraint(condition=models.Q(('user__isnull', False)), fields=('user', 'year'), name='unique_personal_financial_year'), ), migrations.AddConstraint( model_name='financialyear', constraint=models.UniqueConstraint(condition=models.Q(('household__isnull', False)), fields=('household', 'year'), name='unique_household_financial_year'), ), migrations.AlterUniqueTogether( name='householdmembership', unique_together={('household', 'user')}, ), ]