init commit
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
"""
|
||||
Subclass the existing 'runserver' command and change the default options
|
||||
to disable static file serving, allowing WhiteNoise to handle static files.
|
||||
|
||||
There is some unpleasant hackery here because we don't know which command class
|
||||
to subclass until runtime as it depends on which INSTALLED_APPS we have, so we
|
||||
have to determine this dynamically.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from importlib import import_module
|
||||
|
||||
from django.apps import apps
|
||||
|
||||
|
||||
def get_next_runserver_command():
|
||||
"""
|
||||
Return the next highest priority "runserver" command class
|
||||
"""
|
||||
for app_name in get_lower_priority_apps():
|
||||
module_path = "%s.management.commands.runserver" % app_name
|
||||
try:
|
||||
return import_module(module_path).Command
|
||||
except (ImportError, AttributeError):
|
||||
pass
|
||||
|
||||
|
||||
def get_lower_priority_apps():
|
||||
"""
|
||||
Yield all app module names below the current app in the INSTALLED_APPS list
|
||||
"""
|
||||
self_app_name = ".".join(__name__.split(".")[:-3])
|
||||
reached_self = False
|
||||
for app_config in apps.get_app_configs():
|
||||
if app_config.name == self_app_name:
|
||||
reached_self = True
|
||||
elif reached_self:
|
||||
yield app_config.name
|
||||
yield "django.core"
|
||||
|
||||
|
||||
RunserverCommand = get_next_runserver_command()
|
||||
|
||||
|
||||
class Command(RunserverCommand):
|
||||
def add_arguments(self, parser):
|
||||
super().add_arguments(parser)
|
||||
if parser.get_default("use_static_handler") is True:
|
||||
parser.set_defaults(use_static_handler=False)
|
||||
parser.description += (
|
||||
"\n(Wrapped by 'whitenoise.runserver_nostatic' to always"
|
||||
" enable '--nostatic')"
|
||||
)
|
||||
Reference in New Issue
Block a user