@@ -10,12 +10,13 @@ from registrasion.models import inventory as inv
from registrasion.models import conditions as cond
from symposion import proposals
class Command(BaseCommand):
help = 'Populates the tickets and product inventory models'
count = 0
def add_arguments(self, parser):
pass
def handle(self, *args, **options):
@@ -283,77 +284,36 @@ class Command(BaseCommand):
name="I Accept",
price=Decimal("00.00"),
reservation_duration=hours(24),
order=10,
limit_per_user=1,
)
# Penguin dinner
self.penguin_adult = self.find_or_make(
inv.Product,
("name", "category",),
category=self.penguin_dinner,
name=settings.PENGUIN_DINNER_ADULT.name,
description=settings.PENGUIN_DINNER_ADULT.description,
price=settings.PENGUIN_DINNER_ADULT.price,
reservation_duration=hours(1),
self.penguin_child = self.find_or_make(
name=settings.PENGUIN_DINNER_CHILD.name,
description=settings.PENGUIN_DINNER_CHILD.description,
price=settings.PENGUIN_DINNER_CHILD.price,
order=20,
self.penguin_infant = self.find_or_make(
name=settings.PENGUIN_DINNER_INFANT.name,
description=settings.PENGUIN_DINNER_INFANT.description,
price=settings.PENGUIN_DINNER_INFANT.price,
order=30,
# Speakers' dinner
for t in settings.PENGUIN_DINNER.tickets:
self.find_or_make(
name=t.name,
description=t.description,
price=t.price,
reservation_duration=t.reservation,
order=t.order()
self.speakers_adult = self.find_or_make(
category=self.speakers_dinner_ticket,
name=settings.SPEAKERS_DINNER_ADULT.name,
description=settings.SPEAKERS_DINNER_ADULT.description,
price=settings.SPEAKERS_DINNER_ADULT.price,
self.speakers_child = self.find_or_make(
name=settings.SPEAKERS_DINNER_CHILD.name,
description=settings.SPEAKERS_DINNER_CHILD.description,
price=settings.SPEAKERS_DINNER_CHILD.price,
self.speaker_infant = self.find_or_make(
name=settings.SPEAKERS_DINNER_INFANT.name,
description=settings.SPEAKERS_DINNER_INFANT.description,
price=settings.SPEAKERS_DINNER_INFANT.price,
for t in settings.SPEAKERS_DINNER.tickets:
# PDNS
self.pdns = self.find_or_make(
@@ -823,22 +783,24 @@ class Command(BaseCommand):
staff_t_shirts.group.set([
self.group_team,
self.group_volunteers,
])
free_category(staff_t_shirts, self.t_shirt, quantity=5)
print(f"{self.count} categories found/made")
def find_or_make(self, model, search_keys, **k):
''' Either makes or finds an object of type _model_, with the given
kwargs.
Arguments:
search_keys ([str, ...]): A sequence of keys that are used to search
for an existing version in the database. The remaining arguments are
only used when creating a new object.
'''
self.count += 1
try:
keys = dict((key, k[key]) for key in search_keys)
a = model.objects.get(**keys)
self.stdout.write("FOUND : " + str(keys))
model.objects.filter(id=a.id).update(**k)
a.refresh_from_db()