Notifications
This commit is contained in:
1 parent
288aa8c0a1
commit
85fc1c01ee
67 files changed
+3270
-400
No files matched your search
@@ -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]
|
||||
Reference in new issue
Block a user