Пример #1
0
    def send_unsent_scheduled_emails():
        """
        Send out any scheduled emails that are unsent
        """

        current_time = datetime.utcnow()
        email_medium = get_medium()
        to_send = Email.objects.filter(
            scheduled__lte=current_time, sent__isnull=True).select_related(
                'event').prefetch_related('recipients')

        # Fetch the contexts of every event so that they may be rendered
        context_loader.load_contexts_and_renderers([e.event for e in to_send],
                                                   [email_medium])

        emails = []
        for email in to_send:
            to_email_addresses = get_subscribed_email_addresses(email)
            if to_email_addresses:
                text_message, html_message = email.render(email_medium)
                message = create_email_message(
                    to_emails=to_email_addresses,
                    from_email=email.from_address or get_from_email_address(),
                    subject=email.subject
                    or extract_email_subject_from_html_content(html_message),
                    text=text_message,
                    html=html_message,
                )
                emails.append(message)

        connection = mail.get_connection()
        connection.send_messages(emails)
        to_send.update(sent=current_time)
    def convert_events_to_emails():
        """
        Converts unseen events to emails and marks them as seen.
        """

        # Get the email medium
        email_medium = get_medium()

        # Find any unseen events and create unsent email objects
        for event, targets in email_medium.events_targets(seen=False,
                                                          mark_seen=True):
            Email.objects.create_email(event=event, recipients=targets)
    def convert_events_to_emails():
        """
        Converts unseen events to emails and marks them as seen.
        """

        # Get the email medium
        email_medium = get_medium()

        # Get the default from email
        default_from_email = get_from_email_address()

        # Find any unseen events and create unsent email objects
        for event, targets in email_medium.events_targets(seen=False, mark_seen=True):

            # Check the event's context for a from_address, otherwise fallback to default
            from_address = event.context.get('from_address') or default_from_email

            # Create the emails
            Email.objects.create_email(event=event, from_address=from_address, recipients=targets)
Пример #4
0
    def convert_events_to_emails():
        """
        Converts unseen events to emails and marks them as seen.
        """

        # Get the email medium
        email_medium = get_medium()

        # Get the default from email
        default_from_email = get_from_email_address()

        # Find any unseen events and create unsent email objects
        for event, targets in email_medium.events_targets(seen=False,
                                                          mark_seen=True):

            # Check the event's context for a from_address, otherwise fallback to default
            from_address = event.context.get(
                'from_address') or default_from_email

            # Create the emails
            Email.objects.create_email(event=event,
                                       from_address=from_address,
                                       recipients=targets)
    def send_unsent_scheduled_emails():
        """
        Send out any scheduled emails that are unsent
        """

        current_time = datetime.utcnow()
        email_medium = get_medium()
        to_send = Email.objects.filter(
            scheduled__lte=current_time,
            sent__isnull=True
        ).select_related(
            'event'
        ).prefetch_related(
            'recipients'
        )

        # Fetch the contexts of every event so that they may be rendered
        context_loader.load_contexts_and_renderers([e.event for e in to_send], [email_medium])

        emails = []
        for email in to_send:
            to_email_addresses = get_subscribed_email_addresses(email)
            if to_email_addresses:
                text_message, html_message = email.render(email_medium)
                message = create_email_message(
                    to_emails=to_email_addresses,
                    from_email=email.from_address or get_from_email_address(),
                    subject=email.subject or extract_email_subject_from_html_content(html_message),
                    text=text_message,
                    html=html_message,
                )
                emails.append(message)

        connection = mail.get_connection()
        connection.send_messages(emails)
        to_send.update(sent=current_time)
Пример #6
0
 def get(self, request, *args, **kwargs):
     email = self.get_email()
     medium = get_medium()
     context_loader.load_contexts_and_renderers([email.event], [medium])
     txt, html = email.render(medium)
     return HttpResponse(html if html else txt)
 def test_custom(self):
     custom_medium_name = 'test-email'
     with self.settings(ENTITY_EMAILER_MEDIUM_NAME=custom_medium_name):
         call_command('add_email_medium')
         medium = get_medium()
     self.assertEqual(medium.name, custom_medium_name)
 def test_default(self):
     call_command('add_email_medium')
     medium = get_medium()
     self.assertEqual(medium.name, 'email')
 def test_get_medium_default(self):
     medium_default_name = 'email'
     G(Medium, name=medium_default_name)
     medium = get_medium()
     self.assertEqual(medium.name, medium_default_name)
 def test_get_medium_configured(self):
     custom_medium_name = 'test-email'
     G(Medium, name=custom_medium_name)
     with self.settings(ENTITY_EMAILER_MEDIUM_NAME=custom_medium_name):
         medium = get_medium()
     self.assertEqual(medium.name, custom_medium_name)
 def test_custom(self):
     custom_medium_name = 'test-email'
     with self.settings(ENTITY_EMAILER_MEDIUM_NAME=custom_medium_name):
         call_command('add_email_medium')
         medium = get_medium()
     self.assertEqual(medium.name, custom_medium_name)
 def test_default(self):
     call_command('add_email_medium')
     medium = get_medium()
     self.assertEqual(medium.name, 'email')
 def test_get_medium_default(self):
     medium_default_name = 'email'
     G(Medium, name=medium_default_name)
     medium = get_medium()
     self.assertEqual(medium.name, medium_default_name)
 def test_get_medium_configured(self):
     custom_medium_name = 'test-email'
     G(Medium, name=custom_medium_name)
     with self.settings(ENTITY_EMAILER_MEDIUM_NAME=custom_medium_name):
         medium = get_medium()
     self.assertEqual(medium.name, custom_medium_name)