mirror of
https://github.com/django/django.git
synced 2025-10-28 16:16:12 +00:00
Fixed #21581 -- Fixed a number of issues with collectstatic.
When STATIC_ROOT wasn't set, collectstatic --clear would delete every files within the current directory and its descendants. This patch makes the following changes: Prevent collectstatic from running if STATIC_ROOT isn't set. Fixed an issue that prevented collectstatic from displaying the destination directory. Changed the warning header to notify when the command is run in dry-run mode.
This commit is contained in:
@@ -137,32 +137,38 @@ class Command(NoArgsCommand):
|
||||
|
||||
def handle_noargs(self, **options):
|
||||
self.set_options(**options)
|
||||
# Warn before doing anything more.
|
||||
if (isinstance(self.storage, FileSystemStorage) and
|
||||
|
||||
message = ['\n']
|
||||
if self.dry_run:
|
||||
message.append(
|
||||
'You have activated the --dry-run option so no files will be modified.\n\n'
|
||||
)
|
||||
|
||||
message.append(
|
||||
'You have requested to collect static files at the destination\n'
|
||||
'location as specified in your settings'
|
||||
)
|
||||
|
||||
if (isinstance(self.storage._wrapped, FileSystemStorage) and
|
||||
self.storage.location):
|
||||
destination_path = self.storage.location
|
||||
destination_display = ':\n\n %s' % destination_path
|
||||
message.append(':\n\n %s\n\n' % destination_path)
|
||||
else:
|
||||
destination_path = None
|
||||
destination_display = '.'
|
||||
message.append('.\n\n')
|
||||
|
||||
if self.clear:
|
||||
clear_display = 'This will DELETE EXISTING FILES!'
|
||||
message.append('This will DELETE EXISTING FILES!\n')
|
||||
else:
|
||||
clear_display = 'This will overwrite existing files!'
|
||||
message.append('This will overwrite existing files!\n')
|
||||
|
||||
if self.interactive:
|
||||
confirm = input("""
|
||||
You have requested to collect static files at the destination
|
||||
location as specified in your settings%s
|
||||
message.append(
|
||||
'Are you sure you want to do this?\n\n'
|
||||
"Type 'yes' to continue, or 'no' to cancel: "
|
||||
)
|
||||
|
||||
%s
|
||||
Are you sure you want to do this?
|
||||
|
||||
Type 'yes' to continue, or 'no' to cancel: """
|
||||
% (destination_display, clear_display))
|
||||
if confirm != 'yes':
|
||||
raise CommandError("Collecting static files cancelled.")
|
||||
if self.interactive and input(''.join(message)) != 'yes':
|
||||
raise CommandError("Collecting static files cancelled.")
|
||||
|
||||
collected = self.collect()
|
||||
modified_count = len(collected['modified'])
|
||||
|
||||
@@ -32,16 +32,13 @@ class StaticFilesStorage(FileSystemStorage):
|
||||
location = settings.STATIC_ROOT
|
||||
if base_url is None:
|
||||
base_url = settings.STATIC_URL
|
||||
check_settings(base_url)
|
||||
super(StaticFilesStorage, self).__init__(location, base_url,
|
||||
*args, **kwargs)
|
||||
|
||||
def path(self, name):
|
||||
if not self.location:
|
||||
if not location:
|
||||
raise ImproperlyConfigured("You're using the staticfiles app "
|
||||
"without having set the STATIC_ROOT "
|
||||
"setting to a filesystem path.")
|
||||
return super(StaticFilesStorage, self).path(name)
|
||||
check_settings(base_url)
|
||||
super(StaticFilesStorage, self).__init__(location, base_url,
|
||||
*args, **kwargs)
|
||||
|
||||
|
||||
class CachedFilesMixin(object):
|
||||
|
||||
Reference in New Issue
Block a user