@@ -2,25 +2,25 @@ from collections import namedtuple
from datetime import datetime
from datetime import timedelta
from decimal import Decimal
from django.contrib.auth.models import Group
from django.core.exceptions import ObjectDoesNotExist
from django.core.management.base import BaseCommand, CommandError
from registrasion.models import inventory as inv
from registrasion.models import conditions as cond
from symposion import proposals
class Command(BaseCommand):
help = 'Populates the inventory with the NBPy2017 inventory model'
help = 'Populates the inventory with the NBPy2018 inventory model'
def add_arguments(self, parser):
pass
def handle(self, *args, **options):
kinds = []
for i in ("talk", ):
kinds.append(proposals.models.ProposalKind.objects.get(name=i))
self.main_conference_proposals = kinds
self.populate_groups()
@@ -30,24 +30,29 @@ class Command(BaseCommand):
def populate_groups(self):
self.group_team = self.find_or_make(
Group,
("name", ),
name="Conference organisers",
)
self.group_volunteers = self.find_or_make(
name="Conference volunteers",
self.group_rejected_or_waitlist = self.find_or_make(
name="Rejected or Waitlisted Speakers",
self.group_unpublish = self.find_or_make(
name="Can see unpublished products",
def populate_inventory(self):
# Categories
self.ticket = self.find_or_make(
inv.Category,
("name",),
@@ -56,25 +61,25 @@ class Command(BaseCommand):
"For details of what products are included, see our "
"<a href='/attend'>ticket sales page</a>.",
required = True,
render_type=inv.Category.RENDER_TYPE_RADIO,
limit_per_user=1,
order=1,
self.t_shirt = self.find_or_make(
name="T-Shirt",
description="Commemorative conference t-shirts, featuring secret "
"North Bay Python 2017 artwork. Details of sizing and "
"North Bay Python 2018 artwork. Details of sizing and "
"manufacturer are on our <a href='/attend/tshirt'>"
"t-shirts page</a>",
required = False,
render_type=inv.Category.RENDER_TYPE_ITEM_QUANTITY,
order=40,
self.extras = self.find_or_make(
name="Extras",
description="Other items that can improve your conference "
"experience.",
@@ -121,24 +126,33 @@ class Command(BaseCommand):
reservation_duration=hours(24),
order=30,
self.ticket_speaker = self.find_or_make(
inv.Product,
("name", "category",),
category=self.ticket,
name="Speaker",
price=Decimal("00.00"),
order=50,
self.ticket_talk_proposer = self.find_or_make(
name="Talk Proposer",
self.ticket_media = self.find_or_make(
name="Media",
order=60,
self.ticket_sponsor = self.find_or_make(
@@ -262,24 +276,37 @@ class Command(BaseCommand):
# Team tickets are for team members only
team = self.find_or_make(
cond.GroupMemberFlag,
("description", ),
description="Team tickets",
condition=cond.FlagBase.ENABLE_IF_TRUE,
team.group.set([self.group_team])
team.products.set([
self.ticket_team,
])
description="Talk proposer tickets",
team.group.set([self.group_rejected_or_waitlist])
self.ticket_talk_proposer,
# Speaker tickets are for primary speakers only
speaker_tickets = self.find_or_make(
cond.SpeakerFlag,
description="Speaker tickets",
is_presenter=True,
is_copresenter=False,
speaker_tickets.proposal_kind.set(self.main_conference_proposals)
speaker_tickets.products.set([self.ticket_speaker, ])