Opened 6 years ago
Closed 6 years ago
#31528 closed Bug (fixed)
collectstatic doesn't run staticfiles checks.
| Reported by: | Keryn Knight | Owned by: | Hasan Ramezani |
|---|---|---|---|
| Component: | contrib.staticfiles | Version: | dev |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
Piecing this together from a user who is having trouble with staticfiles (who doesn't, at least once) on IRC.
the system checks framework has a check_finders which is invoked if django.contrib.staticfiles is in your INSTALLED_APPS which defers checks to each individually configured finder as finder.check() - this accounts for running the following line:
if not isinstance(settings.STATICFILES_DIRS, (list, tuple)):
which is intended to catch the problem scenario of STATICFILES_DIRS = () being edited to STATICFILES_DIRS = ("mypath") with no trailing comma to make it a tuple, rather than an iterable string.
However, the collectstatic management command has requires_system_checks = False so it appears possible to edit the value and directly run python manage.py collectstatic without the type being checked or the error raised.
Naively, I'm assuming that something like the following needs to occur:
for finder in get_finders():
finder.check() # ignoring NotImplementedError
# then somehow surface any errors back to stderr as if `requires_system_checks = True`
I've not delved deeply into the "surface errors" part.
Change History (4)
comment:1 by , 6 years ago
| Summary: | collectstatic management command ignores all system checks, including its own? → collectstatic doesn't run staticfiles checks. |
|---|---|
| Triage Stage: | Unreviewed → Accepted |
comment:2 by , 6 years ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
We should be able to run only
staticfileschecks withself.check(app_configs)or by usingTags,self.check(tags=[...]).