File diff cf7e67a7475d → 9d37326953b0
pinaxcon/registrasion/management/commands/populate_inventory.py
Show inline comments
...
 
@@ -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),
 
            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
 

	
 
        self.pdns = self.find_or_make(
 
            inv.Product,
 
            ("name", "category",),
...
 
@@ -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()