def generate_notifications(self, save=False): """A list of unsaved :class:`~pretalx.mail.models.QueuedMail` objects to be sent on schedule release.""" mails = [] for speaker in self.speakers_concerned: locale = ( speaker.locale if speaker.locale in self.event.locales else self.event.locale ) with override(locale), tzoverride(self.tz): notifications = get_template( "schedule/speaker_notification.txt" ).render({"speaker": speaker, **self.speakers_concerned[speaker]}) mails.append( self.event.update_template.to_mail( user=speaker, event=self.event, context_kwargs={"user": speaker}, context={"notifications": notifications}, commit=save, locale=locale, ) ) return mails
def notifications(self): mails = [] for speaker in self.speakers_concerned: with override(speaker.locale), tzoverride(self.tz): notifications = get_template( 'schedule/speaker_notification.txt' ).render({'speaker': speaker, **self.speakers_concerned[speaker]}) context = template_context_from_event(self.event) context['notifications'] = notifications mails.append( self.event.update_template.to_mail( user=speaker, event=self.event, context=context, commit=False ) ) return mails
def notifications(self): """A list of unsaved :class:`~pretalx.mail.models.QueuedMail` objects to be sent on schedule release.""" mails = [] for speaker in self.speakers_concerned: with override(speaker.locale), tzoverride(self.tz): notifications = get_template( 'schedule/speaker_notification.txt' ).render({'speaker': speaker, **self.speakers_concerned[speaker]}) context = template_context_from_event(self.event) context['notifications'] = notifications mails.append( self.event.update_template.to_mail( user=speaker, event=self.event, context=context, commit=False ) ) return mails
def notifications(self): tz = pytz.timezone(self.event.timezone) mails = [] for speaker in self.speakers_concerned: with override(speaker.locale), tzoverride(tz): text = get_template('schedule/speaker_notification.txt').render( {'speaker': speaker, **self.speakers_concerned[speaker]} ) mails.append( QueuedMail( event=self.event, to=speaker.email, reply_to=self.event.email, subject=_('New schedule!').format(event=self.event.slug), text=text, ) ) return mails
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['talk'].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)