From 46f26cc307c8969574ebe557624c9767d6f6f143 Mon Sep 17 00:00:00 2001 From: JonnyWong16 Date: Sat, 13 Jan 2018 21:48:33 -0800 Subject: [PATCH] Add message for missing Pillow library --- .../interfaces/default/newsletter_config.html | 1 + plexpy/__init__.py | 1 + plexpy/newsletter_handler.py | 38 ++++++------------- plexpy/newsletters.py | 15 ++++++++ 4 files changed, 28 insertions(+), 27 deletions(-) diff --git a/data/interfaces/default/newsletter_config.html b/data/interfaces/default/newsletter_config.html index 21577380..c198e46a 100644 --- a/data/interfaces/default/newsletter_config.html +++ b/data/interfaces/default/newsletter_config.html @@ -2,6 +2,7 @@ <%! import json from plexpy import helpers, notifiers + from plexpy.notification_handler import PILLOW email_notifiers = [n for n in notifiers.get_notifiers() if n['agent_name'] == 'email'] sorted(email_notifiers, key=lambda k: (k['agent_label'], k['friendly_name'], k['id'])) diff --git a/plexpy/__init__.py b/plexpy/__init__.py index 37bd13a5..f4f5232f 100644 --- a/plexpy/__init__.py +++ b/plexpy/__init__.py @@ -478,6 +478,7 @@ def start(): analytics_event(category='system', action='start') # Schedule newsletters + newsletter_handler.NEWSLETTER_SCHED.start() newsletter_handler.schedule_newsletters() _STARTED = True diff --git a/plexpy/newsletter_handler.py b/plexpy/newsletter_handler.py index cffd59a3..9a5842ea 100644 --- a/plexpy/newsletter_handler.py +++ b/plexpy/newsletter_handler.py @@ -28,41 +28,25 @@ NEWSLETTER_SCHED = BackgroundScheduler() def schedule_newsletters(newsletter_id=None): - with plexpy.SCHED_LOCK: + newsletters_list = newsletters.get_newsletters(newsletter_id=newsletter_id) - # Check if scheduler should be started - start_jobs = not len(NEWSLETTER_SCHED.get_jobs()) + for newsletter in newsletters_list: + newsletter_job_name = '{} ({})'.format(newsletter['agent_label'], + newsletter['friendly_name'] or newsletter['id']) - newsletters_list = newsletters.get_newsletters(newsletter_id=newsletter_id) - - for newsletter in newsletters_list: - newsletter_job_name = '{} ({})'.format(newsletter['agent_label'], - newsletter['friendly_name'] or newsletter['id']) - - if newsletter['active']: - keys = ['minute', 'hour', 'day', 'month', 'day_of_week'] - values = newsletter['cron'].split() - cron = {k: v for k, v in zip(keys, values)} - - schedule_newsletter_job('newsletter-{}'.format(newsletter['id']), name=newsletter_job_name, - func=notify, args=[newsletter['id'], 'on_cron'], cron=newsletter['cron']) - else: - schedule_newsletter_job('newsletter-{}'.format(newsletter['id']), name=newsletter_job_name, - remove_job=True) - - # Start scheduler - if start_jobs and len(NEWSLETTER_SCHED.get_jobs()): - try: - NEWSLETTER_SCHED.start() - except Exception as e: - logger.error(e) + if newsletter['active']: + schedule_newsletter_job('newsletter-{}'.format(newsletter['id']), name=newsletter_job_name, + func=notify, args=[newsletter['id'], 'on_cron'], cron=newsletter['cron']) + else: + schedule_newsletter_job('newsletter-{}'.format(newsletter['id']), name=newsletter_job_name, + remove_job=True) def schedule_newsletter_job(newsletter_job_id, name='', func=None, remove_job=False, args=None, cron=None): if NEWSLETTER_SCHED.get_job(newsletter_job_id): if remove_job: NEWSLETTER_SCHED.remove_job(newsletter_job_id) - logger.info(u"Tautulli NewsletterHandler :: Removed newsletter schedule: %s" % newsletter_job_id) + logger.info(u"Tautulli NewsletterHandler :: Removed scheduled newsletter: %s" % name) else: NEWSLETTER_SCHED.reschedule_job( newsletter_job_id, args=args, trigger=CronTrigger().from_crontab(cron)) diff --git a/plexpy/newsletters.py b/plexpy/newsletters.py index 6a0b14dc..b5589ec1 100644 --- a/plexpy/newsletters.py +++ b/plexpy/newsletters.py @@ -587,4 +587,19 @@ class RecentlyAdded(Newsletter): } ] + if not PILLOW: + pillow_message = { + 'label': 'Background Art', + 'description': 'The Pillow library is missing. ' + 'Background art on the newsletter media cards will not be included.
' + 'Install the Pillow library to add background art. ' + 'Instructions can be found in the ' + 'FAQ.', + 'name': 'recently_added_pillow', + 'input_type': 'help' + } + config_option.insert(0, pillow_message) + return config_option