Notifications

This commit is contained in:
Ruud committed 2011-04-09 20:18:51 +02:00
1 parent 288aa8c0a1
commit 85fc1c01ee
67 files changed
+3270 -400

No files matched your search

+43 -9
View File
@@ -1,4 +1,5 @@
from axl.axel import Event
from couchpotato.core.helpers.variable import merge_dicts
from couchpotato.core.logger import CPLog
import traceback
@@ -19,31 +20,64 @@ def removeEvent(name, handler):
e -= handler
def fireEvent(name, *args, **kwargs):
log.debug('Firing "%s": %s, %s' % (name, args, kwargs))
try:
# Return single handler
single = False
try:
del kwargs['single']
single = True
except: pass
# Merge items
merge = False
try:
del kwargs['merge']
merge = True
except: pass
e = events[name]
e.asynchronous = False
result = e(*args, **kwargs)
results = []
for r in result:
if r[0] == True:
results.append(r[1])
else:
etype, value, tb = r[1]
log.debug(''.join(traceback.format_exception(etype, value, tb)))
if single and not merge:
results = result[0][1]
else:
results = []
for r in result:
if r[0] == True:
results.append(r[1])
else:
errorHandler(r[1])
# Merge the results
if merge:
merged = {}
for result in results:
merged = merge_dicts(merged, result)
results = merged
return results
except Exception, e:
log.debug(e)
log.error('%s: %s' % (name, e))
def fireEventAsync(name, *args, **kwargs):
log.debug('Async "%s": %s, %s' % (name, args, kwargs))
try:
e = events[name]
e.asynchronous = True
e.error_handler = errorHandler
e(*args, **kwargs)
return True
except Exception, e:
log.debug(e)
log.error('%s: %s' % (name, e))
def errorHandler(error):
etype, value, tb = error
log.error(''.join(traceback.format_exception(etype, value, tb)))
def getEvent(name):
return events[name]