bootstrap_dev_data: add products & membership types (#80)

Addresses #79

Co-authored-by: Víðir Valberg Guðmundsson <valberg@orn.li>
Reviewed-on: https://git.data.coop/data.coop/membersystem/pulls/80
Reviewed-by: benjaoming <benjaoming@data.coop>
Co-authored-by: Reynir Björnsson <reynir@reynir.dk>
Co-committed-by: Reynir Björnsson <reynir@reynir.dk>
This commit is contained in:
Reynir Björnsson 2025-03-07 19:38:24 +00:00 committed by valberg
parent 1adaf5e341
commit b3b30e05ed

View file

@ -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)