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