#24150: collectstatic -- using django.conf.settings -------------------------------+-------------------------------------- Reporter: abhillman | Owner: nobody Type: Uncategorized | Status: new Component: Uncategorized | Version: 1.7 Severity: Normal | Resolution: Keywords: | Triage Stage: Unreviewed Has patch: 0 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 -------------------------------+-------------------------------------- Description changed by abhillman:
Old description: > Here is the help text for the collectstatic command: > > {{{ > $ ./manage.py collectstatic --help > Usage: ./manage.py collectstatic [options] > > Collect static files in a single location. > > Options: > -v VERBOSITY, --verbosity=VERBOSITY > Verbosity level; 0=minimal output, 1=normal > output, > 2=verbose output, 3=very verbose output > --settings=SETTINGS The Python path to a settings module, e.g. > "myproject.settings.main". If this isn't > provided, the > DJANGO_SETTINGS_MODULE environment variable will > be > used. > --pythonpath=PYTHONPATH > A directory to add to the Python path, e.g. > "/home/djangoprojects/myproject". > --traceback Raise on exception > --no-color Don't colorize the command output. > --noinput Do NOT prompt the user for input of any kind. > --no-post-process Do NOT post process collected files. > -i PATTERN, --ignore=PATTERN > Ignore files or directories matching this glob- > style > pattern. Use multiple times to ignore more. > -n, --dry-run Do everything except modify the filesystem. > -c, --clear Clear the existing files using the storage before > trying to copy or link the original file. > -l, --link Create a symbolic link to each file instead of > copying. > --no-default-ignore Don't ignore the common private glob-style > patterns > 'CVS', '.*' and '*~'. > --version show program's version number and exit > -h, --help show this help message and exit > }}} > > Clearly mentioned is a {{{--settings}}} flag, which takes a path to a > django settings file. Supposing, however, that we want to run > collectstatic from a script and want to dynamically modify our settings > file. For example, something like > > {{{ > from django.conf import settings > from django.core.management import ManagementUtility > > settings.USE_S3 = False > m = ManagementUtility(['', 'collectstatic']) > m.execute() > }}} > > The command instead uses the settings specified at the shell variable > {{{DJANGO_SETTINGS_MODULE}}} instead of the dynamic settings. Kind of > pesky to have to create a separate settings file to get control of this > sort of thing. New description: Here is the help text for the collectstatic command: {{{ $ ./manage.py collectstatic --help Usage: ./manage.py collectstatic [options] Collect static files in a single location. Options: -v VERBOSITY, --verbosity=VERBOSITY Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, 3=very verbose output --settings=SETTINGS The Python path to a settings module, e.g. "myproject.settings.main". If this isn't provided, the DJANGO_SETTINGS_MODULE environment variable will be used. --pythonpath=PYTHONPATH A directory to add to the Python path, e.g. "/home/djangoprojects/myproject". --traceback Raise on exception --no-color Don't colorize the command output. --noinput Do NOT prompt the user for input of any kind. --no-post-process Do NOT post process collected files. -i PATTERN, --ignore=PATTERN Ignore files or directories matching this glob- style pattern. Use multiple times to ignore more. -n, --dry-run Do everything except modify the filesystem. -c, --clear Clear the existing files using the storage before trying to copy or link the original file. -l, --link Create a symbolic link to each file instead of copying. --no-default-ignore Don't ignore the common private glob-style patterns 'CVS', '.*' and '*~'. --version show program's version number and exit -h, --help show this help message and exit }}} Clearly mentioned is a {{{--settings}}} flag, which takes a path to a django settings file. Supposing, however, that we want to run collectstatic from a script and want to dynamically modify our settings file. For example, something like {{{ from django.conf import settings from django.core.management import ManagementUtility settings.USE_S3 = False m = ManagementUtility(['', 'collectstatic']) m.execute() }}} The command instead uses the settings specified at the shell variable {{{DJANGO_SETTINGS_MODULE}}} instead of the dynamic settings. Kind of pesky to have to create a separate settings file to get control of this sort of thing. Could also be part of a larger problem -- that collectstatic cannot (easily) be used without the {{{ManagementUtility}}} command. For example: {{{ from django.conf import settings from django.core.management import ManagementUtility m = ManagementUtility(['', 'collectstatic']) collectstatic = m.fetch_command('collectstatic') }}} returns an error: {{{ In [70]: collectstatic.collect() --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-70-d17fba11a87b> in <module>() ----> 1 collectstatic.collect() /.../python2.7/site- packages/django/contrib/staticfiles/management/commands/collectstatic.pyc in collect(self) 83 Split off from handle_noargs() to facilitate testing. 84 """ ---> 85 if self.symlink and not self.local: 86 raise CommandError("Can't symlink to a remote destination.") 87 AttributeError: 'Command' object has no attribute 'symlink' }}} -- -- Ticket URL: <https://code.djangoproject.com/ticket/24150#comment:2> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/067.a4623019da41cc718bc17d8df557dd89%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.