def handle(self, *args, **options):
     event = viewutil.get_event(options['event'])
     prizeWinners = prizemail.prize_winners_with_email_pending(event)
     emailTemplate = options['template'] or event.prizewinneremailtemplate
     
     if emailTemplate == None:
         print("No default prize winner email template specified on event {0}, cannot send e-mails.".format(event.short))
     else:
         prizemail.automail_prize_winners(event, prizeWinners, emailTemplate)
    def handle(self, *args, **options):
        super(Command, self).handle(*args, **options)

        event = options['event']
        prizeWinners = prizemail.prize_winners_with_email_pending(event)
        emailTemplate = options['template'] or event.prizewinneremailtemplate
        dryRun = options['dry_run']
        
        if emailTemplate == None:
            self.message("No default prize winner email template specified on event {0}, cannot send e-mails.".format(event.short))
        else:
            prizemail.automail_prize_winners(event, prizeWinners, emailTemplate, verbosity=self.verbosity, dry_run=dryRun)
    def handle(self, *args, **options):
        super(Command, self).handle(*args, **options)

        event = options['event']
        prizeWinners = prizemail.prize_winners_with_email_pending(event)
        emailTemplate = options['template'] or event.prizewinneremailtemplate
        dryRun = options['dry_run']
        
        if emailTemplate == None:
            self.message("No default prize winner email template specified on event {0}, cannot send e-mails.".format(event.short))
        else:
            prizemail.automail_prize_winners(event, prizeWinners, emailTemplate, verbosity=self.verbosity, dry_run=dryRun)
Пример #4
0
def automail_prize_winners(request):
  currentEvent = viewutil.get_selected_event(request)
  if currentEvent == None:
    return HttpResponse("Please select an event first")
  prizewinners = prizemail.prize_winners_with_email_pending(currentEvent)
  if request.method == 'POST':
    form = forms.AutomailPrizeWinnersForm(prizewinners=prizewinners, data=request.POST)
    if form.is_valid():
      prizemail.automail_prize_winners(currentEvent, form.cleaned_data['prizewinners'], form.cleaned_data['emailtemplate'], sender=form.cleaned_data['fromaddress'], replyTo=form.cleaned_data['replyaddress'])
      viewutil.tracker_log(u'prize', u'Mailed prize notifications', event=currentEvent, user=request.user)
      return render(request, 'admin/automail_prize_winners_post.html', { 'prizewinners': form.cleaned_data['prizewinners'] })
  else:
    form = forms.AutomailPrizeWinnersForm(prizewinners=prizewinners)
  return render(request, 'admin/automail_prize_winners.html', { 'form': form })
    def testAutoMail(self):
        models.Prize.objects.update(state='ACCEPTED')
        donors = list(models.Donor.objects.all())
        prizes = list(models.Prize.objects.all())
        fullWinnerList = []
        donorWins = {}
        for prize in prizes:
            if self.rand.getrandbits(1) == 0:
                winners = []
                while len(winners) < prize.maxwinners:
                    d = donors[self.rand.randrange(len(donors))]
                    if d not in winners:
                        winners.append(d)
                for winner in winners:
                    fullWinnerList.append(
                        models.PrizeWinner.objects.create(
                            winner=winner, prize=prize, pendingcount=1
                        )
                    )
                    donorPrizeList = donorWins.get(winner.id, None)
                    if donorPrizeList is None:
                        donorPrizeList = []
                    donorWins[winner.id] = donorPrizeList
                    donorPrizeList.append(prize)

        self.assertSetEqual(
            {pw.id for pw in prizemail.prize_winners_with_email_pending(self.event)},
            {pw.id for pw in fullWinnerList},
        )
        prizemail.automail_prize_winners(
            self.event, fullWinnerList, self.templateEmail, sender='*****@*****.**'
        )

        for prizeWinner in fullWinnerList:
            self.assertTrue(prizeWinner.emailsent)
        for donor in donors:
            wonPrizes = donorWins.get(donor.id, [])
            donorMail = post_office.models.Email.objects.filter(to=donor.email)
            if len(wonPrizes) == 0:
                self.assertEqual(0, donorMail.count())
            else:
                self.assertEqual(1, donorMail.count())
                eventId, winnerId, prizeIds = self._parseMail(donorMail[0])
                self.assertEqual(self.event.id, eventId)
                self.assertEqual(donor.id, winnerId)
                self.assertEqual(len(wonPrizes), len(prizeIds))
                for prize in wonPrizes:
                    self.assertTrue(prize.id in prizeIds)
Пример #6
0
def automail_prize_winners(request):
  if not hasattr(settings, 'EMAIL_HOST'):
    return HttpResponse("Email not enabled on this server.")
  currentEvent = viewutil.get_selected_event(request)
  if currentEvent == None:
    return HttpResponse("Please select an event first")
  prizewinners = prizemail.prize_winners_with_email_pending(currentEvent)
  if request.method == 'POST':
    form = forms.AutomailPrizeWinnersForm(prizewinners=prizewinners, data=request.POST)
    if form.is_valid():
      for prizeWinner in form.cleaned_data['prizewinners']:
        prizeWinner.acceptdeadline = form.cleaned_data['acceptdeadline']
        prizeWinner.save()
      prizemail.automail_prize_winners(currentEvent, form.cleaned_data['prizewinners'], form.cleaned_data['emailtemplate'], sender=form.cleaned_data['fromaddress'], replyTo=form.cleaned_data['replyaddress'])
      viewutil.tracker_log(u'prize', u'Mailed prize winner notifications', event=currentEvent, user=request.user)
      return render(request, 'admin/automail_prize_winners_post.html', { 'prizewinners': form.cleaned_data['prizewinners'] })
  else:
    form = forms.AutomailPrizeWinnersForm(prizewinners=prizewinners)
  return render(request, 'admin/automail_prize_winners.html', { 'form': form })
    def testAutoMail(self):
        models.Prize.objects.update(state='ACCEPTED')
        donors = list(models.Donor.objects.all())
        prizes = list(models.Prize.objects.all())
        fullWinnerList = []
        donorWins = {}
        for prize in prizes:
            if self.rand.getrandbits(1) == 0:
                winners = []
                while len(winners) < prize.maxwinners:
                    d = donors[self.rand.randrange(len(donors))]
                    if d not in winners:
                        winners.append(d)
                for winner in winners:
                    fullWinnerList.append(
                        models.PrizeWinner.objects.create(winner=winner, prize=prize, pendingcount=1))
                    donorPrizeList = donorWins.get(winner.id, None)
                    if donorPrizeList == None:
                        donorPrizeList = []
                    donorWins[winner.id] = donorPrizeList
                    donorPrizeList.append(prize)

        self.assertItemsEqual(
            prizemail.prize_winners_with_email_pending(self.event), fullWinnerList)
        prizemail.automail_prize_winners(
            self.event, fullWinnerList, self.templateEmail, sender='*****@*****.**')

        for prizeWinner in fullWinnerList:
            self.assertTrue(prizeWinner.emailsent)
        for donor in donors:
            wonPrizes = donorWins.get(donor.id, [])
            donorMail = post_office.models.Email.objects.filter(to=donor.email)
            if len(wonPrizes) == 0:
                self.assertEqual(0, donorMail.count())
            else:
                self.assertEqual(1, donorMail.count())
                eventId, winnerId, prizeIds = self._parseMail(donorMail[0])
                self.assertEqual(self.event.id, eventId)
                self.assertEqual(donor.id, winnerId)
                self.assertEqual(len(wonPrizes), len(prizeIds))
                for prize in wonPrizes:
                    self.assertTrue(prize.id in prizeIds)
Пример #8
0
 def automail_prize_winners(request):
     if not hasattr(settings, 'EMAIL_HOST'):
         return HttpResponse('Email not enabled on this server.')
     currentEvent = viewutil.get_selected_event(request)
     if currentEvent is None:
         return HttpResponse('Please select an event first')
     prizewinners = prizemail.prize_winners_with_email_pending(currentEvent)
     if request.method == 'POST':
         form = forms.AutomailPrizeWinnersForm(prizewinners=prizewinners,
                                               data=request.POST)
         if form.is_valid():
             for prizeWinner in form.cleaned_data['prizewinners']:
                 prizeWinner.acceptdeadline = form.cleaned_data[
                     'acceptdeadline']
                 prizeWinner.save()
             prizemail.automail_prize_winners(
                 currentEvent,
                 form.cleaned_data['prizewinners'],
                 form.cleaned_data['emailtemplate'],
                 sender=form.cleaned_data['fromaddress'],
                 replyTo=form.cleaned_data['replyaddress'],
             )
             viewutil.tracker_log(
                 'prize',
                 'Mailed prize winner notifications',
                 event=currentEvent,
                 user=request.user,
             )
             return render(
                 request,
                 'admin/automail_prize_winners_post.html',
                 {'prizewinners': form.cleaned_data['prizewinners']},
             )
     else:
         form = forms.AutomailPrizeWinnersForm(prizewinners=prizewinners)
     return render(request, 'admin/automail_prize_winners.html',
                   {'form': form})