id,summary,reporter,owner,description,type,status,component,version,severity,resolution,keywords,cc,stage,has_patch,needs_docs,needs_tests,needs_better_patch,easy,ui_ux 17861,Static files cache_key should handle spaces in filenames,milosu,nobody,"trying migrate my project to the Django 1.4c1, I get the following errors when running the storagefiles_tests test case: {{{ ====================================================================== ERROR: test_cache_invalidation (regressiontests.staticfiles_tests.tests.TestCollectionCachedStorage) ---------------------------------------------------------------------- Traceback (most recent call last): File ""C:\Python26\Lib\site-packages\django_versions\Django-1.4c1\tests\regressiontests\staticfiles_tests\tests.py"", lin e 118, in setUp self.run_collectstatic() File ""C:\Python26\Lib\site-packages\django_versions\Django-1.4c1\tests\regressiontests\staticfiles_tests\tests.py"", lin e 129, in run_collectstatic ignore_patterns=['*.ignoreme'], **kwargs) File ""C:\Python26\lib\site-packages\django_versions\Django-1.4c1\django\core\management\__init__.py"", line 150, in call _command return klass.execute(*args, **defaults) File ""C:\Python26\lib\site-packages\django_versions\Django-1.4c1\django\core\management\base.py"", line 232, in execute output = self.handle(*args, **options) File ""C:\Python26\lib\site-packages\django_versions\Django-1.4c1\django\core\management\base.py"", line 371, in handle return self.handle_noargs(**options) File ""C:\Python26\lib\site-packages\django_versions\Django-1.4c1\django\contrib\staticfiles\management\commands\collect static.py"", line 163, in handle_noargs collected = self.collect() File ""C:\Python26\lib\site-packages\django_versions\Django-1.4c1\django\contrib\staticfiles\management\commands\collect static.py"", line 120, in collect for original_path, processed_path, processed in processor: File ""C:\Python26\lib\site-packages\django_versions\Django-1.4c1\django\contrib\staticfiles\storage.py"", line 192, in p ost_process self.cache.delete_many([self.cache_key(path) for path in paths]) File ""C:\Python26\lib\site-packages\django_versions\Django-1.4c1\django\core\cache\backends\memcached.py"", line 123, in delete_many self._cache.delete_multi(map(l, keys)) File ""build\bdist.win32\egg\memcache.py"", line 336, in delete_multi server_keys, prefixed_to_orig_key = self._map_and_prefix_keys(keys, key_prefix) File ""build\bdist.win32\egg\memcache.py"", line 585, in _map_and_prefix_keys self.check_key(str_orig_key, key_extra_len=key_extra_len) File ""build\bdist.win32\egg\memcache.py"", line 958, in check_key ""Control characters not allowed"") MemcachedKeyCharacterError: Control characters not allowed }}} After a bit of digging, the root cause is a file which filename contains spaces, e.g. in my case there is a file: django/contrib/admin/static/admin/filebrowser/uploadify/Uploadify v2.1.0 Manual.pdf The above test case is failing while trying to use the following cache key: u'staticfiles:cache:admin\\filebrowser\\uploadify\\Uploadify v2.1.0 Manual.pdf' This cache key is invalid under Memcached that I'm running. Patch attached.",Bug,closed,contrib.staticfiles,1.4-beta-1,Release blocker,fixed,,,Accepted,1,0,0,0,0,0