bornhack-website/src/sponsors/management/commands/generate_sponsor_tickets.py

45 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, 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
)
)