Fix
authorŁukasz Rekucki <lrekucki@gmail.com>
Fri, 2 Oct 2009 09:38:44 +0000 (11:38 +0200)
committerŁukasz Rekucki <lrekucki@gmail.com>
Fri, 2 Oct 2009 09:38:44 +0000 (11:38 +0200)
apps/api/handlers/library_handlers.py
apps/api/urls.py
apps/api/utils.py
lib/wlrepo/mercurial_backend/library.py

index 1cdbe53..0f5b6d6 100644 (file)
@@ -60,8 +60,7 @@ class LibraryHandler(BaseHandler):
 
         documents = {}
         
-        for docid in lib.documents():
-            docid = docid.decode('utf-8')
+        for docid in lib.documents():            
             documents[docid] = {
                 'url': reverse('document_view', args=[docid]),
                 'name': docid,
index c5b0986..773ef8c 100644 (file)
@@ -2,7 +2,6 @@ __author__="lreqc"
 __date__ ="$2009-09-17 16:16:54$"
 
 from django.conf.urls.defaults import *
-
 from api.resources import *
 
 FORMAT = r"\.(?P<emitter_format>xml|json|yaml)"
index c072d35..f6d9b1b 100644 (file)
@@ -62,9 +62,16 @@ 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 locale.strxfrm(x.encode('utf-8')) for (n,x) in enumerate(NAT_EXPR.split(get_key(key))) ]
-        return key
 
+    def getter(key):
+        nkey = get_key(key)
+        if not isinstance(key, unicode):
+            ukey = key.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
 
index e28bd7e..f033fce 100644 (file)
@@ -70,7 +70,7 @@ class MercurialLibrary(wlrepo.Library):
 
 
     def documents(self):
-        return [ key[5:] for key in \
+        return [ key[5:].decode('utf-8') for key in \
             self._hgrepo.branchmap() if key.startswith("$doc:") ]
 
     @property