def automail_prize_contributors(event, prizes, mailTemplate, sender=None, replyTo=None): if not sender: sender = viewutil.get_default_email_host_user() if not replyTo: replyTo = viewutil.get_default_email_host_user() providerDict = {} for prize in prizes: if prize.provideremail in providerDict.keys(): prizeList = providerDict[prize.provideremail] else: prizeList = [] providerDict[prize.provideremail] = prizeList prizeList.append(prize) for providerEmail, prizeList in providerDict.iteritems(): denied = list(filter(lambda prize: prize.state == 'DENIED', prizeList)) estimatedName = estimate_contributor_name(prizeList) formatContext = { 'event': event, 'contributorName': estimatedName if estimatedName != None else providerEmail, 'acceptedPrizes': list(filter(lambda prize: prize.state == 'ACCEPTED', prizeList)), 'deniedPrizes': list(filter(lambda prize: prize.state == 'DENIED', prizeList)), } post_office.mail.send(recipients=[providerEmail], sender=sender, template=mailTemplate.name, context=formatContext, headers={'Reply-to': replyTo}) for prize in prizeList: prize.acceptemailsent = True prize.save()
def automail_prize_winners(event, prizeWinners, mailTemplate, sender=None, replyTo=None): if not sender: sender = viewutil.get_default_email_host_user() if not replyTo: replyTo = viewutil.get_default_email_host_user() winnerDict = {} for prizeWinner in prizeWinners: if prizeWinner.winner.id in winnerDict.keys(): winList = winnerDict[prizeWinner.winner.id] else: winList = [] winnerDict[prizeWinner.winner.id] = winList winList.append(prizeWinner) for winnerk, prizesWon in winnerDict.iteritems(): winner = prizesWon[0].winner prizesList = [] for prizeWon in prizesWon: prizesList.append(prizeWon.prize) formatContext = { 'event': event, 'winner': winner, 'prizes': prizesList, 'prizeWins': prizesWon, # this includes the full prizewinner object, which has the list of pending wins. 'prizes' is kept in the dict for backwards compatibility 'multi': len(prizesList) > 1, 'replyaddress': replyTo, } post_office.mail.send(recipients=[winner.email], sender=sender, template=mailTemplate.name, context=formatContext, headers={'Reply-to': replyTo}) for prizeWon in prizesWon: prizeWon.emailsent = True prizeWon.save()