Browse Source

Use proper sorting

pull/3111/head
Ruud 11 years ago
parent
commit
d16dd7c75d
  1. 9
      couchpotato/core/event.py
  2. 13
      couchpotato/core/helpers/variable.py
  3. 7
      libs/axl/axel.py

9
couchpotato/core/event.py

@ -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

13
couchpotato/core/helpers/variable.py

@ -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):

7
libs/axl/axel.py

@ -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:

Loading…
Cancel
Save