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