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 22972 HashedFilesMixin.patterns should limit URL matches to their respective filetypes alex.ehlke@… aehlke "{{{HashedFilesMixin}}} contains a {{{patterns}}} property which maps file extensions to regex patterns. This works great for the default case that Django ships with {{{""*.css""}}} as the only filetype, but results in surprising behavior once extended with multiple filetypes. I would expect the regex patterns to only apply to the filetype they're categorized under, but once I added {{{""*.js""}}} to {{{patterns}}} (via subclassing), the CSS rules also applied to my JS files. My use-case of extending this is to add URL rewriting to JS source map references, e.g. {{{//# sourceMappingURL=foo.js.map }}} which can appear at the end of JS files. I need to be able to rewrite these URLs in the same way that Django's staticfiles can rewrite URLs in CSS, for e.g. adding hashes to filenames. Once I tried extending {{{patterns}}} with this: {{{ patterns = HashedFilesMixin.patterns + ( (""*.js"", ( (r""""""(//# sourceMappingURL=(\s*))"""""", """"""//# sourceMappingURL=%s""""""), )), ) }}} The surprising and broken behavior was that Django tried to rewrite ""URLs"" for this JS (from Backbone.js): {{{this.loadUrl(window.location.hash)}}}, which matched the CSS pattern for rewriting {{{url(foo)}}} because the regex patterns are case-insensitive. This also applies to the previous {{{CachedFilesMixin}}} from before 1.7. Please let me know if a fix for this would be accepted, and I'll put together a test case and patch." Bug closed contrib.staticfiles dev Normal duplicate HashedFilesMixin CachedFilesMixin staticfiles Accepted 1 0 0 1 0 0