Merge branch 'master' of stigma:platforma
[redakcja.git] / apps / api / utils.py
index 9b45a32..19309ff 100644 (file)
@@ -35,7 +35,7 @@ def validate_form(formclass, source='GET'):
   
     def decorator(func):
         @wraps(func)
   
     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():
             form = formclass(getattr(request, source), request.FILES)
 
             if not form.is_valid():
@@ -58,11 +58,20 @@ def hglibrary(func):
 
 
 import re
 
 
 import re
+import locale
+
 NAT_EXPR = re.compile(r'(\d+)', re.LOCALE | re.UNICODE)
 def natural_order(get_key=lambda x: x):
 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
 
     return getter