Files
CouchPotatoServer/couchpotato/core/notifications/growl/main.py
T
2013-09-02 22:44:44 +02:00

67 lines
1.9 KiB
Python

from couchpotato.core.event import fireEvent, addEvent
from couchpotato.core.logger import CPLog
from couchpotato.core.notifications.base import Notification
from couchpotato.environment import Env
from gntp import notifier
import traceback
log = CPLog(__name__)
class Growl(Notification):
registered = False
def __init__(self):
super(Growl, self).__init__()
if self.isEnabled():
addEvent('app.load', self.register)
def register(self):
if self.registered: return
try:
hostname = self.conf('hostname')
password = self.conf('password')
port = self.conf('port')
self.growl = notifier.GrowlNotifier(
applicationName = Env.get('appname'),
notifications = ["Updates"],
defaultNotifications = ["Updates"],
applicationIcon = '%s/static/images/couch.png' % fireEvent('app.api_url', single = True),
hostname = hostname if hostname else 'localhost',
password = password if password else None,
port = port if port else 23053
)
self.growl.register()
self.registered = True
except Exception, e:
if 'timed out' in str(e):
self.registered = True
else:
log.error('Failed register of growl: %s', traceback.format_exc())
def notify(self, message = '', data = None, listener = None):
if not data: data = {}
self.register()
try:
self.growl.notify(
noteType = "Updates",
title = self.default_title,
description = message,
sticky = False,
priority = 1,
)
log.info('Growl notifications sent.')
return True
except:
log.error('Failed growl notification.')
return False