Opened 13 years ago

Closed 12 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 Danilo Bargen, 13 years ago

Owner: changed from nobody to Danilo Bargen

comment:2 by Danilo Bargen, 13 years ago

Severity: Release blockerNormal

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?

comment:3 by Aymeric Augustin, 13 years ago

Resolution: needsinfo
Status: newclosed

Closing as 'needsinfo' since there isn't enough information to reproduce the issue.

Last edited 13 years ago by Aymeric Augustin (previous) (diff)

comment:4 by brantyoung, 13 years ago

Resolution: needsinfo
Status: closedreopened

I create a minimal project to reproduce this ticket: https://bitbucket.org/brantyoung/cached_files_mixin_bug/overview

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.

Version 0, edited 13 years ago by brantyoung (next)

comment:5 by Jannis Leidel <jannis@…>, 12 years ago

Resolution: fixed
Status: reopenedclosed

In [3727f6d09681e4cb23d67e14ecc677a364c991bd]:

Fixed #18430 -- Use the FILE_CHARSET setting when reading from a file during post processing with the cached staticfiles storage. Thanks to Brant Young for initial debugging.

Note: See TracTickets for help on using tickets.
Back to Top