Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #20108 -- Fixed filepath_to_uri decoding error

This was a regression due to unicode_literals usage. Thanks Ivan
Virabyan for the report and the initial patch.
  • Loading branch information...
commit 164528acc8752f33a3af4c1255b24702a4c81240 1 parent 829dc3c
@claudep claudep authored
Showing with 8 additions and 2 deletions.
  1. +1 −1  django/utils/encoding.py
  2. +7 −1 tests/utils_tests/encoding.py
View
2  django/utils/encoding.py
@@ -234,7 +234,7 @@ def filepath_to_uri(path):
return path
# I know about `os.sep` and `os.altsep` but I want to leave
# some flexibility for hardcoding separators.
- return quote(force_bytes(path.replace("\\", "/")), safe=b"/~!*()'")
+ return quote(force_bytes(path).replace(b"\\", b"/"), safe=b"/~!*()'")
def get_system_encoding():
"""
View
8 tests/utils_tests/encoding.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
from django.utils import unittest
-from django.utils.encoding import force_bytes
+from django.utils.encoding import force_bytes, filepath_to_uri
class TestEncodingUtils(unittest.TestCase):
@@ -15,3 +15,9 @@ def test_force_bytes_exception(self):
exc = ValueError(error_msg)
result = force_bytes(exc)
self.assertEqual(result, error_msg.encode('utf-8'))
+
+ def test_filepath_to_uri(self):
+ self.assertEqual(filepath_to_uri('upload\\чубака.mp4'),
+ 'upload/%D1%87%D1%83%D0%B1%D0%B0%D0%BA%D0%B0.mp4')
+ self.assertEqual(filepath_to_uri('upload\\чубака.mp4'.encode('utf-8')),
+ 'upload/%D1%87%D1%83%D0%B1%D0%B0%D0%BA%D0%B0.mp4')
Please sign in to comment.
Something went wrong with that request. Please try again.