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

49 lines
1.6 KiB
Python
Raw Normal View History

# coding: utf-8
2019-08-08 09:24:44 +00:00
import logging
from django.core.management.base import BaseCommand
from django.utils import timezone
from camps.models import Camp
from sponsors.models import Sponsor
from sponsors.email import add_sponsorticket_email
from tickets.models import SponsorTicket, TicketType
2019-08-08 09:24:44 +00:00
logger = logging.getLogger("bornhack.%s" % __name__)
class Command(BaseCommand):
help = "Emails sponsor tickets"
def add_arguments(self, parser):
parser.add_argument("camp_slug", 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):
camp = Camp.objects.get(slug=options["camp_slug"])
2019-08-08 08:03:27 +00:00
sponsors = Sponsor.objects.filter(tier__camp=camp, tickets_generated=True)
for sponsor in sponsors:
if (
sponsor.tier.tickets and
sponsor.tickets_generated and
sponsor.ticket_email and
sponsor.ticket_ready and
not sponsor.tickets_sent
):
2019-08-08 08:44:37 +00:00
self.output("# Generating outgoing emails to send tickets for {}:".format(sponsor))
for ticket in sponsor.sponsorticket_set.all():
# send the email
if add_sponsorticket_email(ticket=ticket):
logger.info("OK: email to %s added" % sponsor)
else:
logger.error("Unable to send sponsor ticket email to %s" % sponsor)
sponsor.tickets_sent = True
sponsor.save()