[Notifications] Fix unhandled TypeErrors on Python 3

- Notify requires GLib.Variant for set_hint
- Twisted defer.fail only accepts Exceptions.

Fixes: #3267
This commit is contained in:
Calum Lind 2019-06-12 18:43:23 +01:00
parent 1b4ac88ce7
commit 63a4301a8b
1 changed files with 8 additions and 6 deletions

View File

@ -42,7 +42,7 @@ except ImportError:
try:
require_version('Notify', '0.7')
from gi.repository import Notify
from gi.repository import Notify, GLib
except (ValueError, ImportError):
POPUP_AVAILABLE = False
else:
@ -174,15 +174,17 @@ class GtkUiNotifications(CustomNotifications):
if not self.config['popup_enabled']:
return defer.succeed(_('Popup notification is not enabled.'))
if not POPUP_AVAILABLE:
return defer.fail(_('libnotify is not installed'))
err_msg = _('libnotify is not installed')
log.warning(err_msg)
return defer.fail(ImportError(err_msg))
if Notify.init('Deluge'):
self.note = Notify.Notification.new(title, message, 'deluge-panel')
self.note.set_hint('desktop-entry', 'deluge')
self.note.set_hint('desktop-entry', GLib.Variant.new_string('deluge'))
if not self.note.show():
err_msg = _('Failed to popup notification')
log.warning(err_msg)
return defer.fail(err_msg)
return defer.fail(Exception(err_msg))
return defer.succeed(_('Notification popup shown'))
def __play_sound(self, sound_path=''):
@ -191,7 +193,7 @@ class GtkUiNotifications(CustomNotifications):
if not SOUND_AVAILABLE:
err_msg = _('pygame is not installed')
log.warning(err_msg)
return defer.fail(err_msg)
return defer.fail(ImportError(err_msg))
pygame.init()
try:
@ -203,7 +205,7 @@ class GtkUiNotifications(CustomNotifications):
except pygame.error as ex:
err_msg = _('Sound notification failed %s') % ex
log.warning(err_msg)
return defer.fail(err_msg)
return defer.fail(ex)
else:
msg = _('Sound notification Success')
log.info(msg)