Beispiel #1
0
def notify(newsletter_id=None, notify_action=None, **kwargs):
    logger.info(
        "Tautulli NewsletterHandler :: Preparing newsletter for newsletter_id %s."
        % newsletter_id)

    newsletter_config = newsletters.get_newsletter_config(
        newsletter_id=newsletter_id)

    if not newsletter_config:
        return

    if notify_action in ('test', 'api'):
        subject = kwargs.pop('subject', None) or newsletter_config['subject']
        body = kwargs.pop('body', None) or newsletter_config['body']
        message = kwargs.pop('message', None) or newsletter_config['message']
    else:
        subject = newsletter_config['subject']
        body = newsletter_config['body']
        message = newsletter_config['message']

    email_msg_id = email.utils.make_msgid()
    email_reply_msg_id = get_last_newsletter_email_msg_id(
        newsletter_id=newsletter_id, notify_action=notify_action)

    newsletter_agent = newsletters.get_agent_class(
        newsletter_id=newsletter_id,
        newsletter_id_name=newsletter_config['id_name'],
        agent_id=newsletter_config['agent_id'],
        config=newsletter_config['config'],
        email_config=newsletter_config['email_config'],
        subject=subject,
        body=body,
        message=message,
        email_msg_id=email_msg_id,
        email_reply_msg_id=email_reply_msg_id)

    # Set the newsletter state in the db
    newsletter_log_id = set_notify_state(
        newsletter=newsletter_config,
        notify_action=notify_action,
        subject=newsletter_agent.subject_formatted,
        body=newsletter_agent.body_formatted,
        message=newsletter_agent.message_formatted,
        filename=newsletter_agent.filename_formatted,
        start_date=newsletter_agent.start_date.format('YYYY-MM-DD'),
        end_date=newsletter_agent.end_date.format('YYYY-MM-DD'),
        start_time=newsletter_agent.start_time,
        end_time=newsletter_agent.end_time,
        newsletter_uuid=newsletter_agent.uuid,
        email_msg_id=email_msg_id)

    # Send the notification
    success = newsletter_agent.send()

    if success:
        set_notify_success(newsletter_log_id)
        return True
Beispiel #2
0
    def notify_newsletter(self,
                          newsletter_id='',
                          subject='',
                          body='',
                          message='',
                          **kwargs):
        """ Send a newsletter using Tautulli.

            ```
            Required parameters:
                newsletter_id (int):    The ID number of the newsletter agent

            Optional parameters:
                subject (str):          The subject of the newsletter
                body (str):             The body of the newsletter
                message (str):          The message of the newsletter

            Returns:
                None
            ```
        """
        if not newsletter_id:
            self._api_msg = 'Newsletter failed: no newsletter id provided.'
            self._api_result_type = 'error'
            return

        newsletter = newsletters.get_newsletter_config(
            newsletter_id=newsletter_id)

        if not newsletter:
            self._api_msg = 'Newsletter failed: invalid newsletter_id provided %s.' % newsletter_id
            self._api_result_type = 'error'
            return

        logger.api_debug('Tautulli APIv2 :: Sending newsletter.')
        success = newsletter_handler.notify(newsletter_id=newsletter_id,
                                            notify_action='api',
                                            subject=subject,
                                            body=body,
                                            message=message,
                                            **kwargs)

        if success:
            self._api_msg = 'Newsletter sent.'
            self._api_result_type = 'success'
        else:
            self._api_msg = 'Newsletter failed.'
            self._api_result_type = 'error'

        return