diff --git a/pinaxcon/registrasion/management/commands/populate_inventory.py b/pinaxcon/registrasion/management/commands/populate_inventory.py index 8afbb2fd1a15f7be08c25efb7b020559b3e28066..c0877d34c94101c3fc12a4fe636bf7da0d9d189f 100644 --- a/pinaxcon/registrasion/management/commands/populate_inventory.py +++ b/pinaxcon/registrasion/management/commands/populate_inventory.py @@ -13,6 +13,7 @@ from symposion import proposals class Command(BaseCommand): help = 'Populates the tickets and product inventory models' + count = 0 def add_arguments(self, parser): pass @@ -286,71 +287,30 @@ class Command(BaseCommand): 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), - order=10, - ) - self.penguin_child = self.find_or_make( - inv.Product, - ("name", "category",), - category=self.penguin_dinner, - name=settings.PENGUIN_DINNER_CHILD.name, - description=settings.PENGUIN_DINNER_CHILD.description, - price=settings.PENGUIN_DINNER_CHILD.price, - reservation_duration=hours(1), - order=20, - ) - self.penguin_infant = self.find_or_make( - inv.Product, - ("name", "category",), - category=self.penguin_dinner, - name=settings.PENGUIN_DINNER_INFANT.name, - description=settings.PENGUIN_DINNER_INFANT.description, - price=settings.PENGUIN_DINNER_INFANT.price, - reservation_duration=hours(1), - order=30, - ) - - # Speakers' dinner + for t in settings.PENGUIN_DINNER.tickets: + self.find_or_make( + inv.Product, + ("name", "category",), + category=self.penguin_dinner, + name=t.name, + description=t.description, + price=t.price, + reservation_duration=t.reservation, + order=t.order() + ) - self.speakers_adult = self.find_or_make( - inv.Product, - ("name", "category",), - category=self.speakers_dinner_ticket, - name=settings.SPEAKERS_DINNER_ADULT.name, - description=settings.SPEAKERS_DINNER_ADULT.description, - price=settings.SPEAKERS_DINNER_ADULT.price, - reservation_duration=hours(1), - order=10, - ) - self.speakers_child = self.find_or_make( - inv.Product, - ("name", "category",), - category=self.speakers_dinner_ticket, - name=settings.SPEAKERS_DINNER_CHILD.name, - description=settings.SPEAKERS_DINNER_CHILD.description, - price=settings.SPEAKERS_DINNER_CHILD.price, - reservation_duration=hours(1), - order=20, - ) - self.speaker_infant = self.find_or_make( - inv.Product, - ("name", "category",), - category=self.speakers_dinner_ticket, - name=settings.SPEAKERS_DINNER_INFANT.name, - description=settings.SPEAKERS_DINNER_INFANT.description, - price=settings.SPEAKERS_DINNER_INFANT.price, - reservation_duration=hours(1), - order=30, - ) + for t in settings.SPEAKERS_DINNER.tickets: + self.find_or_make( + inv.Product, + ("name", "category",), + category=self.speakers_dinner_ticket, + name=t.name, + description=t.description, + price=t.price, + reservation_duration=t.reservation, + order=t.order() + ) # PDNS @@ -826,6 +786,8 @@ class Command(BaseCommand): ]) 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. @@ -835,7 +797,7 @@ class Command(BaseCommand): 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)