Use proper sorting

This commit is contained in:
Ruud
2014-03-06 21:30:59 +01:00
parent e51e6b2171
commit d16dd7c75d
3 changed files with 10 additions and 19 deletions
+2 -7
View File
@@ -1,5 +1,5 @@
from axl.axel import Event from axl.axel import Event
from couchpotato.core.helpers.variable import mergeDicts, natcmp from couchpotato.core.helpers.variable import mergeDicts, natsortKey
from couchpotato.core.logger import CPLog from couchpotato.core.logger import CPLog
import threading import threading
import traceback import traceback
@@ -51,11 +51,6 @@ def addEvent(name, handler, priority = 100):
}) })
def removeEvent(name, handler):
e = events[name]
e -= handler
def fireEvent(name, *args, **kwargs): def fireEvent(name, *args, **kwargs):
if name not in events: return if name not in events: return
@@ -106,7 +101,7 @@ def fireEvent(name, *args, **kwargs):
result = e(*args, **kwargs) result = e(*args, **kwargs)
result_keys = result.keys() result_keys = result.keys()
result_keys.sort(natcmp) result_keys.sort(key = natsortKey)
if options['single'] and not options['merge']: if options['single'] and not options['merge']:
results = None results = None
+3 -10
View File
@@ -214,16 +214,9 @@ def tryFloat(s):
return float(s) return float(s)
except: return 0 except: return 0
def natsortKey(string_):
def natsortKey(s): """See http://www.codinghorror.com/blog/archives/001018.html"""
return map(tryInt, re.findall(r'(\d+|\D+)', s)) return [int(s) if s.isdigit() else s for s in re.split(r'(\d+)', string_)]
def natcmp(a, b):
a2 = natsortKey(a)
b2 = natsortKey(b)
return (a2 > b2) - (a2 < b2)
def toIterable(value): def toIterable(value):
+5 -2
View File
@@ -11,7 +11,7 @@
# Source: http://pypi.python.org/pypi/axel # Source: http://pypi.python.org/pypi/axel
# Docs: http://packages.python.org/axel # Docs: http://packages.python.org/axel
from couchpotato.core.helpers.variable import natcmp from couchpotato.core.helpers.variable import natsortKey
import Queue import Queue
import hashlib import hashlib
import sys import sys
@@ -158,7 +158,10 @@ class Event(object):
t.daemon = True t.daemon = True
t.start() t.start()
for handler in sorted(self.handlers.iterkeys(), cmp = natcmp): handler_keys = self.handlers.keys()
handler_keys.sort(key = natsortKey)
for handler in handler_keys:
self.queue.put(handler) self.queue.put(handler)
if self.asynchronous: if self.asynchronous: