From b3b30e05ed7827631af652868e6dfb399ac32ac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reynir=20Bj=C3=B6rnsson?= Date: Fri, 7 Mar 2025 19:38:24 +0000 Subject: [PATCH] bootstrap_dev_data: add products & membership types (#80) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Addresses #79 Co-authored-by: Víðir Valberg Guðmundsson Reviewed-on: https://git.data.coop/data.coop/membersystem/pulls/80 Reviewed-by: benjaoming Co-authored-by: Reynir Björnsson Co-committed-by: Reynir Björnsson --- .../management/commands/bootstrap_dev_data.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) 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)