From 27635caa1db6a8e977cf07befb310cfaed466cc2 Mon Sep 17 00:00:00 2001 From: Ruud Date: Fri, 12 Oct 2012 18:50:57 +0200 Subject: [PATCH] Simpler options for events --- couchpotato/core/event.py | 62 +++++++++++++-------------------------- 1 file changed, 21 insertions(+), 41 deletions(-) diff --git a/couchpotato/core/event.py b/couchpotato/core/event.py index 8319150a..4842aadb 100644 --- a/couchpotato/core/event.py +++ b/couchpotato/core/event.py @@ -46,49 +46,29 @@ def fireEvent(name, *args, **kwargs): #log.debug('Firing event %s', name) try: - # Fire after event - is_after_event = False - try: - del kwargs['is_after_event'] - is_after_event = True - except: pass + options = { + 'is_after_event': False, # Fire after event + 'on_complete': False, # onComplete event + 'single': False, # Return single handler + 'merge': False, # Merge items + 'in_order': False, # Fire them in specific order, waits for the other to finish + } - # onComplete event - on_complete = False - try: - on_complete = kwargs['on_complete'] - del kwargs['on_complete'] - except: pass - - # 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 - - # Merge items - in_order = False - try: - del kwargs['in_order'] - in_order = True - except: pass + # Do options + for x in options: + try: + del kwargs[x] + options[x] = True + except: pass e = events[name] - if not in_order: e.lock.acquire() + if not options['in_order']: e.lock.acquire() e.asynchronous = False - e.in_order = in_order + e.in_order = options['in_order'] result = e(*args, **kwargs) - if not in_order: e.lock.release() + if not options['in_order']: e.lock.release() - if single and not merge: + if options['single'] and not options['merge']: results = None # Loop over results, stop when first not None result is found. @@ -112,7 +92,7 @@ def fireEvent(name, *args, **kwargs): errorHandler(r[1]) # Merge - if merge and len(results) > 0: + if options['merge'] and len(results) > 0: # Dict if type(results[0]) == dict: merged = {} @@ -133,11 +113,11 @@ def fireEvent(name, *args, **kwargs): log.debug('Return modified results for %s', name) results = modified_results - if not is_after_event: + if not options['is_after_event']: fireEvent('%s.after' % name, is_after_event = True) - if on_complete: - on_complete() + if options['on_complete']: + options['on_complete']() return results except KeyError, e: