diff --git a/src/utils/management/commands/bootstrap_dev_data.py b/src/utils/management/commands/bootstrap_dev_data.py index 5490a85..578cb88 100644 --- a/src/utils/management/commands/bootstrap_dev_data.py +++ b/src/utils/management/commands/bootstrap_dev_data.py @@ -2,10 +2,13 @@ from datetime import timedelta +from accounting.models import Product from django.contrib.auth.models import User from django.core.management import BaseCommand from django.db.backends.postgresql.psycopg_any import DateRange from django.utils import timezone +from djmoney.money import Money +from membership.models import MembershipType from membership.models import SubscriptionPeriod @@ -17,11 +20,15 @@ class Command(BaseCommand): superuser: User normal_users: list[User] + products: dict[str, Product] + def handle(self, *args: str, **options: str) -> None: """Handle the command.""" self.create_superuser() self.create_normal_users() self.create_subscription_periods() + self.create_products() + self.create_membership_types() def create_superuser(self) -> None: """Create superuser.""" @@ -47,3 +54,30 @@ class Command(BaseCommand): SubscriptionPeriod.objects.create( period=DateRange(timezone.now().date() + timedelta(days=183), timezone.now().date() + timedelta(days=365)) ) + + def create_products(self) -> None: + """Create products.""" + self.stdout.write("Creating products") + products_data = { + "Medlemsydelse": (360, 90), + "Medlemskontingent": (150, 0), + "Nedsat medlemsydelse": (40, 10), + "Nedsat medlemskontingent": (50, 0), + } + self.products = {} + for name, (price, vat) in products_data.items(): + self.products[name] = Product.objects.create( + name=name, + price=Money(price, "DKK"), + vat=Money(vat, "DKK"), + ) + + def create_membership_types(self) -> None: + """Create membership types.""" + self.stdout.write("Creating membership types") + ydelse = self.products["Medlemsydelse"] + kontingent = self.products["Medlemskontingent"] + nedsat_ydelse = self.products["Nedsat medlemsydelse"] + nedsat_kontingent = self.products["Nedsat medlemskontingent"] + MembershipType.objects.create(name="Normalt medlemskab").products.add(ydelse, kontingent) + MembershipType.objects.create(name="Nedsat medlemskab").products.add(nedsat_ydelse, nedsat_kontingent)