X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/927a991b71d9876995dd2beadee8d9ff16175a50..c821de3dedaf3c15a0a3b4e3e933bda71d576206:/apps/api/utils.py?ds=sidebyside diff --git a/apps/api/utils.py b/apps/api/utils.py index 9b45a320..19309ff6 100644 --- a/apps/api/utils.py +++ b/apps/api/utils.py @@ -35,7 +35,7 @@ def validate_form(formclass, source='GET'): def decorator(func): @wraps(func) - def decorated(self, request, * args, ** kwargs): + def decorated(self, request, *args, **kwargs): form = formclass(getattr(request, source), request.FILES) if not form.is_valid(): @@ -58,11 +58,20 @@ def hglibrary(func): 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): - key = [int(x) if n%2 else x for (n,x) in enumerate(NAT_EXPR.split(get_key(key))) ] - return key + 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