diff --git a/data/interfaces/default/notification_config.html b/data/interfaces/default/notification_config.html index f352fda6..ea0ff0ff 100644 --- a/data/interfaces/default/notification_config.html +++ b/data/interfaces/default/notification_config.html @@ -190,7 +190,10 @@ from plexpy import helpers }); $('#test_notifier').click(function () { - doAjaxCall('set_notification_config', $(this), 'tabs', true); + doAjaxCall('set_notification_config', $(this), 'tabs', true, sendTestNotification); + }); + + function sendTestNotification() { $.ajax({ url: 'test_notifier', data: { @@ -203,11 +206,16 @@ from plexpy import helpers cache: false, async: true, complete: function (xhr, status) { - msg = '  ' + xhr.responseText; - showMsg(msg, false, true, 2000); + if (xhr.responseText.indexOf('sent') > -1) { + msg = '  ' + xhr.responseText; + showMsg(msg, false, true, 2000); + } else { + msg = '  ' + xhr.responseText; + showMsg(msg, false, true, 2000, true); + } } }); - }); + } $('#pushbullet_apikey, #pushover_apitoken, #scripts_folder').on('change', function () { // Reload modal to update certain fields diff --git a/plexpy/notifiers.py b/plexpy/notifiers.py index c5cc56cc..fc971046 100644 --- a/plexpy/notifiers.py +++ b/plexpy/notifiers.py @@ -445,55 +445,55 @@ def send_notification(agent_id, subject, body, notify_action, **kwargs): if agent_id == 0: growl = GROWL() - growl.notify(message=body, event=subject) + return growl.notify(message=body, event=subject) elif agent_id == 1: prowl = PROWL() - prowl.notify(message=body, event=subject) + return prowl.notify(message=body, event=subject) elif agent_id == 2: xbmc = XBMC() - xbmc.notify(subject=subject, message=body) + return xbmc.notify(subject=subject, message=body) elif agent_id == 3: plex = Plex() - plex.notify(subject=subject, message=body) + return plex.notify(subject=subject, message=body) elif agent_id == 4: nma = NMA() - nma.notify(subject=subject, message=body) + return nma.notify(subject=subject, message=body) elif agent_id == 5: pushalot = PUSHALOT() - pushalot.notify(message=body, event=subject) + return pushalot.notify(message=body, event=subject) elif agent_id == 6: pushbullet = PUSHBULLET() - pushbullet.notify(message=body, subject=subject) + return pushbullet.notify(message=body, subject=subject) elif agent_id == 7: pushover = PUSHOVER() - pushover.notify(message=body, event=subject) + return pushover.notify(message=body, event=subject) elif agent_id == 8: osx_notify = OSX_NOTIFY() - osx_notify.notify(title=subject, text=body) + return osx_notify.notify(title=subject, text=body) elif agent_id == 9: boxcar = BOXCAR() - boxcar.notify(title=subject, message=body) + return boxcar.notify(title=subject, message=body) elif agent_id == 10: email = Email() - email.notify(subject=subject, message=body) + return email.notify(subject=subject, message=body) elif agent_id == 11: tweet = TwitterNotifier() - tweet.notify(subject=subject, message=body) + return tweet.notify(subject=subject, message=body) elif agent_id == 12: iftttClient = IFTTT() - iftttClient.notify(subject=subject, message=body, action=notify_action) + return iftttClient.notify(subject=subject, message=body, action=notify_action) elif agent_id == 13: telegramClient = TELEGRAM() - telegramClient.notify(message=body, event=subject, **kwargs) + return telegramClient.notify(message=body, event=subject, **kwargs) elif agent_id == 14: slackClient = SLACK() - slackClient.notify(message=body, event=subject) + return slackClient.notify(message=body, event=subject) elif agent_id == 15: scripts = Scripts() - scripts.notify(message=body, subject=subject, notify_action=notify_action, **kwargs) + return scripts.notify(message=body, subject=subject, notify_action=notify_action, **kwargs) elif agent_id == 16: facebook = FacebookNotifier() - facebook.notify(subject=subject, message=body, **kwargs) + return facebook.notify(subject=subject, message=body, **kwargs) else: logger.debug(u"PlexPy Notifiers :: Unknown agent id received.") else: @@ -546,10 +546,10 @@ class GROWL(object): growl.register() except gntp.notifier.errors.NetworkError: logger.warn(u"PlexPy Notifiers :: Growl notification failed: network error") - return + return False except gntp.notifier.errors.AuthError: logger.warn(u"PlexPy Notifiers :: Growl notification failed: authentication error") - return + return False # Fix message message = message.encode(plexpy.SYS_ENCODING, "replace") @@ -569,9 +569,10 @@ class GROWL(object): icon=image ) logger.info(u"PlexPy Notifiers :: Growl notification sent.") + return True except gntp.notifier.errors.NetworkError: logger.warn(u"PlexPy Notifiers :: Growl notification failed: network error") - return + return False def updateLibrary(self): @@ -734,9 +735,11 @@ class XBMC(object): raise Exception else: logger.info(u"PlexPy Notifiers :: XBMC notification sent.") + return True except Exception: logger.warn(u"PlexPy Notifiers :: XBMC notification filed.") + return False def return_config_options(self): config_option = [{'label': 'XBMC Host:Port', @@ -816,9 +819,11 @@ class Plex(object): raise Exception else: logger.info(u"PlexPy Notifiers :: Plex Home Theater notification sent.") + return True except Exception: logger.warn(u"PlexPy Notifiers :: Plex Home Theater notification filed.") + return False def return_config_options(self): config_option = [{'label': 'Plex Home Theater Host:Port', @@ -1278,12 +1283,11 @@ class TwitterNotifier(object): try: api.PostUpdate(message) logger.info(u"PlexPy Notifiers :: Twitter notification sent.") + return True except Exception as e: logger.warn(u"PlexPy Notifiers :: Twitter notification failed: %s" % e) return False - return True - def return_config_options(self): config_option = [{'label': 'Instructions', 'description': 'Step 1: Visit \ @@ -2062,11 +2066,14 @@ class Scripts(object): if error: error = error.strip() logger.error(u"PlexPy Notifiers :: Script error: %s" % error) + return False else: logger.info(u"PlexPy Notifiers :: Script notification sent.") + return True except OSError as e: logger.error(u"PlexPy Notifiers :: Failed to run script: %s" % e) + return False def return_config_options(self): config_option = [{'label': 'Supported File Types', @@ -2313,11 +2320,11 @@ class FacebookNotifier(object): try: api.put_wall_post(profile_id=self.group_id, message=message, attachment=attachment) logger.info(u"PlexPy Notifiers :: Facebook notification sent.") + return True except Exception as e: logger.warn(u"PlexPy Notifiers :: Error sending Facebook post: %s" % e) return False - return True else: logger.warn(u"PlexPy Notifiers :: Error sending Facebook post: No Facebook Group ID provided.") return False diff --git a/plexpy/webserve.py b/plexpy/webserve.py index 01811546..db2e6736 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -1625,8 +1625,10 @@ class WebInterface(object): if this_agent: logger.debug(u"Sending test %s notification." % this_agent['name']) - notifiers.send_notification(this_agent['id'], subject, body, 'test', **kwargs) - return "Notification sent." + if notifiers.send_notification(this_agent['id'], subject, body, 'test', **kwargs): + return "Notification sent." + else: + return "Notification failed." else: logger.debug(u"Unable to send test notification, invalid notification agent ID %s." % agent_id) return "Invalid notification agent ID %s." % agent_id