Exemple #1
0
 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
Exemple #2
0
 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
Exemple #3
0
 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
Exemple #4
0
 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
Exemple #5
0
    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)