Commit 5604b07c by David Trowbridge

Don't filter out "missing" files in the glob stage.

Commit bd6b9d89 dramatically changed the way that files are loaded, and had the
side-effect of filtering out any files which were sourced by finders outside of
the main `STATICFILES_DIRS`.

In the case I'm trying to address, we have an extension framework (in Review
Board and Djblets) which can load static media from third-party packages which
are activated at runtime. This media is loaded by instantiating
`StylesheetNode` and `JavascriptNode` from `pipeline.templatetags` in
combination with a special finder. Because django-pipeline no longer uses
finders before the compile stage, calling `storage.exists` (via
`Package.sources` -> `glob`) silently filters these out.

Inside `glob`, I agree that it's useful to test existence when trying to expand
`*` or `?`, but when the path is just a normal filename, it should be safe to
assume that the user knows what they're doing. This causes the paths to be
emitted into the rendered template whether or not `staticfiles_storage` claims
they exist, and anything which the configured staticfiles finders can't locate
will surface as a 404 rather than being silently eaten.
parent 9ca6cbed
......@@ -25,12 +25,7 @@ def iglob(pathname):
"""
if not has_magic(pathname):
try:
if staticfiles_storage.exists(pathname):
yield pathname
except NotImplementedError:
# Being optimistic
yield pathname
yield pathname
return
dirname, basename = os.path.split(pathname)
if not dirname:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment