Skip to content

Commit a39e9b6

Browse files
authored
Change slugs to ascii only (#5)
Some tools like the AWS CLI don't do well with unicode file names even though AWS S3 does not have a problem with them. It is saver to use ASCII characters only. Which is the default for Django's builtin slugify method anyways.
1 parent 45084a7 commit a39e9b6

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

dynamic_filenames.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,14 @@
44
import uuid
55
from string import Formatter
66

7-
try: # use unicode-slugify library if installed
8-
from slugify import slugify
9-
except ImportError:
10-
from django.utils.text import slugify
7+
8+
def slugify(value):
9+
try: # use unicode-slugify library if installed
10+
from slugify import slugify as _slugify
11+
return _slugify(value, only_ascii=True)
12+
except ImportError:
13+
from django.utils.text import slugify as _slugify
14+
return _slugify(value, allow_unicode=False)
1115

1216

1317
class SlugFormatter(Formatter):

tests/test_dynamic_filenames.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ def test_call__name_override(self):
100100

101101
def test_call__slug(self):
102102
assert FilePattern(filename_pattern='{instance.title:slug}{ext}')(
103-
instance=DefaultModel(title='best model'), filename='some_file.txt'
104-
) == 'best-model.txt'
103+
instance=DefaultModel(title='best model with ünicode'), filename='some_file.txt'
104+
) == 'best-model-with-unicode.txt'
105105

106106
def test_call__slug_precision(self):
107107
assert FilePattern(filename_pattern='{instance.title:.4slug}{ext}')(

0 commit comments

Comments
 (0)