From 53eb46d6526a71b85597ddaacf5954033fa3ac59 Mon Sep 17 00:00:00 2001
From: Daniel STAN <daniel.stan@crans.org>
Date: Wed, 12 Mar 2014 20:55:34 +0100
Subject: [PATCH] =?UTF-8?q?fname=20doit=20=C3=AAtre=20un=20unicode?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On ne gère la conversion vers du binaire (utf-8) qu'au dernier
moment.
---
 client.py | 1 +
 server.py | 5 ++++-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/client.py b/client.py
index eb79567..3b18d95 100755
--- a/client.py
+++ b/client.py
@@ -961,6 +961,7 @@ if __name__ == "__main__":
                         liste
             """)
     parser.add_argument('fname', nargs='?', default=None,
+        type=lambda x: x.decode('utf-8'),
         help="Nom du fichier à afficher")
     
     # On parse les options fournies en commandline
diff --git a/server.py b/server.py
index 66723b1..8e075f5 100755
--- a/server.py
+++ b/server.py
@@ -41,6 +41,8 @@ def validate(roles, mode='r'):
 
 def getpath(filename, backup=False):
     """Récupère le chemin du fichier ``filename``"""
+    assert(isinstance(filename, unicode))
+    filename = filename.encode('utf-8')
     return os.path.join(serverconfig.STORE, '%s.%s' % (filename, 'bak' if backup else 'json'))
 
 def writefile(filename, contents):
@@ -140,7 +142,8 @@ def listfiles():
     files = {}
     for filename in filenames:
         file_dict = json.loads(open(filename).read())
-        files[filename[:-5]] = file_dict["roles"]
+        fname = filename[:-5].decode('utf-8')
+        files[fname] = file_dict["roles"]
     return files
 
 @server_command('getfile')
-- 
GitLab