From c9d07d251fc68fe1a80c2a49e183bbef546238d9 Mon Sep 17 00:00:00 2001
From: Florian Apolloner <florian@apolloner.eu>
Date: Mon, 3 Jun 2013 13:18:16 +0200
Subject: [PATCH] Fixed loaddata for Django checkouts with non ASCII chars in
 the name.

---
 django/core/management/commands/loaddata.py | 3 ++-
 django/utils/_os.py                         | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/django/core/management/commands/loaddata.py b/django/core/management/commands/loaddata.py
index 45f25c21db..6856e85e45 100644
--- a/django/core/management/commands/loaddata.py
+++ b/django/core/management/commands/loaddata.py
@@ -16,6 +16,7 @@ from django.db import (connections, router, transaction, DEFAULT_DB_ALIAS,
 from django.db.models import get_app_paths
 from django.utils.encoding import force_text
 from django.utils.functional import cached_property, memoize
+from django.utils._os import upath
 from itertools import product
 
 try:
@@ -237,7 +238,7 @@ class Command(BaseCommand):
                 dirs.append(d)
         dirs.extend(list(settings.FIXTURE_DIRS))
         dirs.append('')
-        dirs = [os.path.abspath(os.path.realpath(d)) for d in dirs]
+        dirs = [upath(os.path.abspath(os.path.realpath(d))) for d in dirs]
         return dirs
 
     def parse_name(self, fixture_name):
diff --git a/django/utils/_os.py b/django/utils/_os.py
index 6c1cd17a83..607e02c94d 100644
--- a/django/utils/_os.py
+++ b/django/utils/_os.py
@@ -38,7 +38,7 @@ def upath(path):
     """
     Always return a unicode path.
     """
-    if not six.PY3:
+    if not six.PY3 and not isinstance(path, six.text_type):
         return path.decode(fs_encoding)
     return path