def testAutomail(self):
        models.Prize.objects.update(state='ACCEPTED')
        prizeContributors = []

        for i in range(0, 10):
            prizeContributors.append(
                AuthUser.objects.create(username='******' + str(i),
                                        email='u' + str(i) + '@email.com',
                                        is_active=True))

        prizes = models.Prize.objects.all()
        donors = models.Donor.objects.all()
        contributorPrizeWinners = {}

        for contributor in prizeContributors:
            contributorPrizeWinners[contributor] = []

        for prize in prizes:
            prize.handler = self.rand.choice(prizeContributors)
            prize.save()
            prizeWinner = models.PrizeWinner.objects.create(
                winner=self.rand.choice(donors),
                prize=prize,
                acceptcount=1,
                pendingcount=0,
                emailsent=True,
                acceptemailsentcount=0)
            contributorPrizeWinners[prize.handler].append(prizeWinner)

        winnerList = reduce(lambda x, y: x + y,
                            list(contributorPrizeWinners.values()), [])
        self.assertItemsEqual(
            prizemail.prizes_with_winner_accept_email_pending(self.event),
            winnerList)

        prizemail.automail_winner_accepted_prize(self.event,
                                                 winnerList,
                                                 self.templateEmail,
                                                 sender=self.sender)

        for contributor in prizeContributors:
            prizeWinners = contributorPrizeWinners[contributor]
            contributorMail = post_office.models.Email.objects.filter(
                to=contributor.email)
            if len(prizeWinners) == 0:
                self.assertEqual(0, contributorMail.count())
            else:
                self.assertEqual(1, contributorMail.count())
                eventId, handlerId, mailedPrizeWinnerIds, reply = self._parseMail(
                    contributorMail[0])
                self.assertEqual(self.event.id, eventId)
                self.assertEqual(contributor.id, handlerId)
                self.assertEqual(len(mailedPrizeWinnerIds), len(prizeWinners))
                for prizeWinner in prizeWinners:
                    self.assertTrue(prizeWinner.id in mailedPrizeWinnerIds)
                    self.assertEqual(prizeWinner.acceptemailsentcount,
                                     prizeWinner.acceptcount)
                self.assertEqual(self.sender, reply)
 def handle(self, *args, **options):
     event = viewutil.get_event(options['event'])
     prizeWinners = prizemail.prizes_with_winner_accept_email_pending(event)
     emailTemplate = options['template'] or event.prizewinneracceptemailtemplate
     
     if emailTemplate == None:
         print("No default prize winner accepted email template specified on event {0}, cannot send e-mails.".format(event.short))
     else:
         prizemail.automail_winner_accepted_prize(event, prizeWinners, emailTemplate)
Example #3
0
    def handle(self, *args, **options):
        super(Command, self).handle(*args, **options)

        event = viewutil.get_event(options['event'])
        prizeWinners = prizemail.prizes_with_winner_accept_email_pending(event)
        emailTemplate = options['template'] or event.prizewinneracceptemailtemplate
        dryRun = options['dry_run']

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

        event = viewutil.get_event(options['event'])
        prizeWinners = prizemail.prizes_with_winner_accept_email_pending(event)
        emailTemplate = options['template'] or event.prizewinneracceptemailtemplate
        dryRun = options['dry_run']

        if emailTemplate == None:
            self.message("No default prize winner accepted email template specified on event {0}, cannot send e-mails.".format(event.short))
        else:
            prizemail.automail_winner_accepted_prize(event, prizeWinners, emailTemplate, verbosity=self.verbosity, dry_run=dryRun)
Example #5
0
    def automail_prize_accept_notifications(request, event=None):
        if not hasattr(settings, 'EMAIL_HOST'):
            return HttpResponse('Email not enabled on this server.')

        event = viewutil.get_event(event)

        if not event.id:
            return render(
                request,
                'tracker/eventlist.html',
                {
                    'events': models.Event.objects.all(),
                    'pattern': 'admin:automail_prize_accept_notifications',
                    'subheading': 'Mail Prize Accept Notifications',
                },
            )

        prizewinners = prizemail.prizes_with_winner_accept_email_pending(event)
        if request.method == 'POST':
            form = forms.AutomailPrizeAcceptNotifyForm(
                prizewinners=prizewinners, data=request.POST)
            if form.is_valid():
                prizemail.automail_winner_accepted_prize(
                    event,
                    form.cleaned_data['prizewinners'],
                    form.cleaned_data['emailtemplate'],
                    sender=form.cleaned_data['fromaddress'],
                    replyTo=form.cleaned_data['replyaddress'],
                )
                viewutil.tracker_log(
                    'prize',
                    'Mailed prize accept notifications',
                    event=event,
                    user=request.user,
                )
                return render(
                    request,
                    'admin/tracker/automail_prize_winners_accept_notifications_post.html',
                    {'prizewinners': form.cleaned_data['prizewinners']},
                )
        else:
            form = forms.AutomailPrizeAcceptNotifyForm(
                prizewinners=prizewinners)
        return render(
            request,
            'admin/tracker/automail_prize_winners_accept_notifications.html',
            {'form': form},
        )
    def testAutomail(self):
        models.Prize.objects.update(state='ACCEPTED')
        prizeContributors = []

        for i in range(0, 10):
            prizeContributors.append(AuthUser.objects.create(
                username='******'+str(i), email='u'+str(i)+'@email.com', is_active=True))

        prizes = models.Prize.objects.all()
        donors = models.Donor.objects.all()
        contributorPrizeWinners = {}

        for contributor in prizeContributors:
            contributorPrizeWinners[contributor] = []

        for prize in prizes:
            prize.handler = self.rand.choice(prizeContributors)
            prize.save()
            prizeWinner = models.PrizeWinner.objects.create(
                winner=self.rand.choice(donors), prize=prize, acceptcount=1, pendingcount=0, emailsent=True, acceptemailsentcount=0)
            contributorPrizeWinners[prize.handler].append(prizeWinner)

        winnerList = reduce(lambda x, y: x + y,
                            contributorPrizeWinners.values(), [])
        self.assertItemsEqual(
            prizemail.prizes_with_winner_accept_email_pending(self.event), winnerList)

        prizemail.automail_winner_accepted_prize(
            self.event, winnerList, self.templateEmail, sender=self.sender)

        for contributor in prizeContributors:
            prizeWinners = contributorPrizeWinners[contributor]
            contributorMail = post_office.models.Email.objects.filter(
                to=contributor.email)
            if len(prizeWinners) == 0:
                self.assertEqual(0, contributorMail.count())
            else:
                self.assertEqual(1, contributorMail.count())
                eventId, handlerId, mailedPrizeWinnerIds, reply = self._parseMail(
                    contributorMail[0])
                self.assertEqual(self.event.id, eventId)
                self.assertEqual(contributor.id, handlerId)
                self.assertEqual(len(mailedPrizeWinnerIds), len(prizeWinners))
                for prizeWinner in prizeWinners:
                    self.assertTrue(prizeWinner.id in mailedPrizeWinnerIds)
                    self.assertEqual(
                        prizeWinner.acceptemailsentcount, prizeWinner.acceptcount)
                self.assertEqual(self.sender, reply)
Example #7
0
def automail_prize_accept_notifications(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.prizes_with_winner_accept_email_pending(currentEvent)
  if request.method == 'POST':
    form = forms.AutomailPrizeAcceptNotifyForm(prizewinners=prizewinners, data=request.POST)
    if form.is_valid():
      prizemail.automail_winner_accepted_prize(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 accept notifications', event=currentEvent, user=request.user)
      return render(request, 'admin/automail_prize_winners_accept_notifications_post.html', { 'prizewinners': form.cleaned_data['prizewinners'] })
  else:
    form = forms.AutomailPrizeAcceptNotifyForm(prizewinners=prizewinners)
  return render(request, 'admin/automail_prize_winners_accept_notifications.html', { 'form': form })
Example #8
0
 def automail_prize_accept_notifications(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.prizes_with_winner_accept_email_pending(
         currentEvent)
     if request.method == 'POST':
         form = forms.AutomailPrizeAcceptNotifyForm(
             prizewinners=prizewinners, data=request.POST)
         if form.is_valid():
             prizemail.automail_winner_accepted_prize(
                 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 accept notifications',
                 event=currentEvent,
                 user=request.user,
             )
             return render(
                 request,
                 'admin/automail_prize_winners_accept_notifications_post.html',
                 {'prizewinners': form.cleaned_data['prizewinners']},
             )
     else:
         form = forms.AutomailPrizeAcceptNotifyForm(
             prizewinners=prizewinners)
     return render(
         request,
         'admin/automail_prize_winners_accept_notifications.html',
         {'form': form},
     )