Changeset - 9d37326953b0
[Not reviewed]
0 2 0
Clinton Roy - 5 years ago 2019-09-30 10:28:33
clintonr@ansto.gov.au
more ticket information as data
2 files changed with 83 insertions and 80 deletions:
0 comments (0 inline, 0 general)
pinaxcon/registrasion/management/commands/populate_inventory.py
Show inline comments
...
 
@@ -15,2 +15,3 @@ class Command(BaseCommand):
 
    help = 'Populates the tickets and product inventory models'
 
    count = 0
 

	
...
 
@@ -288,67 +289,26 @@ class Command(BaseCommand):
 
        )
 
        # 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()
 
            )
 

	
...
 
@@ -828,2 +788,4 @@ class Command(BaseCommand):
 

	
 
        print(f"{self.count} categories found/made")
 

	
 
    def find_or_make(self, model, search_keys, **k):
...
 
@@ -837,3 +799,3 @@ class Command(BaseCommand):
 
        '''
 

	
 
        self.count += 1
 
        try:
pinaxcon/settings.py
Show inline comments
...
 
@@ -9,3 +9,3 @@ import saml2.saml
 

	
 
from datetime import date, datetime
 
from datetime import date, datetime, timedelta
 

	
...
 
@@ -446,3 +446,11 @@ if DEV_MODE and DEV_MODE == "LAPTOP":
 

	
 
# Ticket information
 

	
 
class Category(object):
 
    tickets = []
 

	
 
    @classmethod
 
    def order(cls, ticket) -> int:
 
        return (cls.tickets.index(ticket) + 1) * 10
 

	
 

	
 
@dataclass(frozen=True)
...
 
@@ -458,3 +466,3 @@ class Ticket:
 
@dataclass(frozen=True)
 
class PenguinDinnerTicket:
 
class DinnerTicket:
 
    name: str
...
 
@@ -462,9 +470,31 @@ class PenguinDinnerTicket:
 
    description: str
 
    reservation: timedelta
 
    cat: Category
 

	
 
    def order(self):
 
        return self.cat.order(self)
 

	
 
@dataclass(frozen=True)
 
class SpeakersDinnerTicket:
 
    name: str
 
    price: Decimal
 
    description: str
 

	
 
class PenguinDinnerTicket(DinnerTicket):
 
    pass
 

	
 

	
 
class SpeakersDinnerTicket(DinnerTicket):
 
    pass
 

	
 

	
 
class SpeakersDinnerCat(Category):
 
    @classmethod
 
    def create(cls, name: str, price: Decimal, description: str, reservation: timedelta) -> SpeakersDinnerTicket:
 
        t = SpeakersDinnerTicket(name, price, description, reservation, cls)
 
        cls.tickets.append(t)
 
        return t
 

	
 

	
 
class PenguinDinnerCat(Category):
 
    @classmethod
 
    def create(cls, name: str, price: Decimal, description: str, reservation: timedelta) -> PenguinDinnerTicket:
 
        t = PenguinDinnerTicket(name, price, description, reservation, cls)
 
        cls.tickets.append(t)
 
        return t
 

	
...
 
@@ -504,9 +534,20 @@ PENGUIN_DINNER_INFANT = PenguinDinnerTicket("Infant", Decimal("0.0"),
 

	
 
SPEAKERS_DINNER_ADULT = SpeakersDinnerTicket("Adult", Decimal("100.00"),
 
                                             "Includes an adult's meal and full beverage service.")
 
SPEAKERS_DINNER_CHILD = SpeakersDinnerTicket("Child", Decimal("60.00"),
 
                                             "Children 14 and under. "
 
                                             "Includes a child's meal and soft drink service.")
 
SPEAKERS_DINNER_INFANT = SpeakersDinnerTicket("Infant", Decimal("00.00"),
 
                                              "Infant must be seated in an adult's lap. "
 
                                              "No food or beverage service.")
 
SPEAKERS_DINNER = SpeakersDinnerCat
 
PENGUIN_DINNER = PenguinDinnerCat
 

	
 
SPEAKERS_DINNER_ADULT = SpeakersDinnerCat.create(
 
    "Adult", Decimal("100.00"),
 
    "Includes an adult's meal and full beverage service.",
 
    timedelta(hours=1))
 

	
 
SPEAKERS_DINNER_CHILD = SpeakersDinnerCat.create(
 
    "Child", Decimal("60.00"),
 
    "Children 14 and under. "
 
    "Includes a child's meal and soft drink service.",
 
    timedelta(hours=1))
 

	
 
SPEAKERS_DINNER_INFANT = SpeakersDinnerCat.create(
 
    "Infant", Decimal("00.00"),
 
    "Infant must be seated in an adult's lap. "
 
    "No food or beverage service.",
 
    timedelta(hours=1))
0 comments (0 inline, 0 general)