def notify_speakers(self):
tz = pytz.timezone(self.event.timezone)
speakers = defaultdict(lambda: {'create': [], 'update': []})
if self.changes['action'] == 'create':
speakers = {
speaker: {'create': self.talks.filter(submission__speakers=speaker), 'update': []}
for speaker in User.objects.filter(submissions__slots__schedule=self)
}
else:
if self.changes['count'] == len(self.changes['canceled_talks']):
return
for new_talk in self.changes['new_talks']:
for speaker in new_talk.submission.speakers.all():
speakers[speaker]['create'].append(new_talk)
for moved_talk in self.changes['moved_talks']:
for speaker in moved_talk['submission'].speakers.all():
speakers[speaker]['update'].append(moved_talk)
for speaker in speakers:
with override(speaker.locale), tzoverride(tz):
text = get_template('schedule/speaker_notification.txt').render(
{'speaker': speaker, **speakers[speaker]}
)
QueuedMail.objects.create(
event=self.event,
to=speaker.email,
reply_to=self.event.email,
subject=_('[{event}] New schedule!').format(event=self.event.slug),
text=text
)
评论列表
文章目录