Opened 13 years ago
Closed 13 years ago
#18430 closed Bug (fixed)
CachedFilesMixin crashed when CSS files contains non-ascii utf-8 character
| Reported by: | brantyoung | Owned by: | Danilo Bargen |
|---|---|---|---|
| Component: | contrib.staticfiles | Version: | 1.4 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | yes | UI/UX: | no |
Description
Traceback (most recent call last):
...
...
File ".../ENV/local/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 120, in collect
for original_path, processed_path, processed in processor:
File ".../ENV/local/lib/python2.7/site-packages/django/contrib/staticfiles/storage.py", line 226, in post_process
content = pattern.sub(converter, content)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xf0 in position 366: ordinal not in range(128)
Reproduce:
# save a css file that contains non-ascii utf-8 character (ie Chinese character):
.icon-link:before { content: "错"; }
# set STATICFILES_STORAGE to any storage class that will involve CachedFilesMixin mixin
# run manage.py collectstatic
Howto fix:
I relace following code:
content = original_file.read().decode
to:
content = original_file.read().decode('utf-8')
just worked as expected.
Change History (5)
comment:1 by , 13 years ago
| Owner: | changed from to |
|---|
comment:2 by , 13 years ago
| Severity: | Release blocker → Normal |
|---|
comment:3 by , 13 years ago
| Resolution: | → needsinfo |
|---|---|
| Status: | new → closed |
Closing as 'needsinfo' since there isn't enough information to reproduce the issue.
comment:4 by , 13 years ago
| Resolution: | needsinfo |
|---|---|
| Status: | closed → reopened |
I create a minimal project to reproduce this ticket: https://bitbucket.org/brantyoung/cached_files_mixin_bug/
It's weird, if I moving all of font files to any directory except *PROJECTROOT*/css, every thing works fine.
But if both iconic-font.css and font files in the same sub-directory, CachedFilesMixin will crash.
comment:5 by , 13 years ago
| Resolution: | → fixed |
|---|---|
| Status: | reopened → closed |
I can't reproduce this on current trunk using
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.CachedStaticFilesStorage'(which uses the CachedFilesMixin). I even tried converting the css file to latin1, which garbled the contents, but still worked using collectstatic.Could you provide a CSS file that causes problems for you?
Or can somebody else reproduce the problem?