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:
parent
1adaf5e341
commit
b3b30e05ed
1 changed files with 34 additions and 0 deletions
|
@ -2,10 +2,13 @@
|
||||||
|
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
|
||||||
|
from accounting.models import Product
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.core.management import BaseCommand
|
from django.core.management import BaseCommand
|
||||||
from django.db.backends.postgresql.psycopg_any import DateRange
|
from django.db.backends.postgresql.psycopg_any import DateRange
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
from djmoney.money import Money
|
||||||
|
from membership.models import MembershipType
|
||||||
from membership.models import SubscriptionPeriod
|
from membership.models import SubscriptionPeriod
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,11 +20,15 @@ class Command(BaseCommand):
|
||||||
superuser: User
|
superuser: User
|
||||||
normal_users: list[User]
|
normal_users: list[User]
|
||||||
|
|
||||||
|
products: dict[str, Product]
|
||||||
|
|
||||||
def handle(self, *args: str, **options: str) -> None:
|
def handle(self, *args: str, **options: str) -> None:
|
||||||
"""Handle the command."""
|
"""Handle the command."""
|
||||||
self.create_superuser()
|
self.create_superuser()
|
||||||
self.create_normal_users()
|
self.create_normal_users()
|
||||||
self.create_subscription_periods()
|
self.create_subscription_periods()
|
||||||
|
self.create_products()
|
||||||
|
self.create_membership_types()
|
||||||
|
|
||||||
def create_superuser(self) -> None:
|
def create_superuser(self) -> None:
|
||||||
"""Create superuser."""
|
"""Create superuser."""
|
||||||
|
@ -47,3 +54,30 @@ class Command(BaseCommand):
|
||||||
SubscriptionPeriod.objects.create(
|
SubscriptionPeriod.objects.create(
|
||||||
period=DateRange(timezone.now().date() + timedelta(days=183), timezone.now().date() + timedelta(days=365))
|
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)
|
||||||
|
|
Loading…
Add table
Reference in a new issue