47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
# coding: utf-8
|
|
from django.core.management.base import BaseCommand
|
|
from django.utils import timezone
|
|
|
|
from camps.models import Camp
|
|
from sponsors.models import Sponsor
|
|
from tickets.models import SponsorTicket, TicketType
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = "Creates sponsor tickets"
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument("camp_slug", type=str)
|
|
parser.add_argument("ticket_type_pk", type=str)
|
|
|
|
def output(self, message):
|
|
self.stdout.write(
|
|
"{}: {}".format(timezone.now().strftime("%Y-%m-%d %H:%M:%S"), message)
|
|
)
|
|
|
|
def handle(self, *args, **options):
|
|
ticket_type = TicketType.objects.get(pk=options["ticket_type_pk"])
|
|
camp = Camp.objects.get(slug=options["camp_slug"])
|
|
sponsors = Sponsor.objects.filter(
|
|
tier__camp=camp, ticket_ready=True, tickets_generated=False
|
|
)
|
|
|
|
for sponsor in sponsors:
|
|
if sponsor.tier.tickets:
|
|
self.output("# Generating tickets for {}:".format(sponsor))
|
|
for _ in range(sponsor.tier.tickets):
|
|
ticket = SponsorTicket(sponsor=sponsor, ticket_type=ticket_type)
|
|
ticket.save()
|
|
ticket.generate_pdf()
|
|
self.output(
|
|
"- {}_ticket_{}.pdf".format(ticket.shortname, ticket.pk)
|
|
)
|
|
sponsor.tickets_generated = True
|
|
sponsor.save()
|
|
else:
|
|
self.output(
|
|
"{} is in tier {}, which has no tickets set.".format(
|
|
sponsor, sponsor.tier
|
|
)
|
|
)
|