X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/9bec1deeed00ac693e6031c69f0778d3bb0dfbd9..953ea32f89c36d8ee0f38c5d093fea371e635b90:/apps/api/utils.py?ds=inline diff --git a/apps/api/utils.py b/apps/api/utils.py index 93e54be0..37a89a29 100644 --- a/apps/api/utils.py +++ b/apps/api/utils.py @@ -11,7 +11,7 @@ from piston.utils import rc import api.response -from wlrepo import MercurialLibrary +import wlrepo import settings class TextEmitter(Emitter): @@ -50,8 +50,28 @@ def validate_form(formclass, source='GET'): def hglibrary(func): @wraps(func) def decorated(self, *args, **kwargs): - l = MercurialLibrary(settings.REPOSITORY_PATH) + l = wlrepo.open_library(settings.REPOSITORY_PATH, 'hg') kwargs['lib'] = l return func(self, *args, **kwargs) - return decorated + return decorated + + + +import re +import locale + +NAT_EXPR = re.compile(r'(\d+)', re.LOCALE | re.UNICODE) +def natural_order(get_key=lambda x: x): + + def getter(key): + nkey = get_key(key) + if not isinstance(nkey, unicode): + ukey = nkey.decode('utf-8') + else: + ukey = nkey + + parts = enumerate( NAT_EXPR.split(ukey)) + return [int(x) if n%2 else locale.strxfrm(x.encode('utf-8')) for (n,x) in parts ] + + return getter