Promoted --verbosity to be a top level option for all management commands. Also added -v as a consistent short form of --verbosity. This is mostly to save Malcolm's poor arthritic fingers.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@9110 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Russell Keith-Magee 2008-10-02 12:57:13 +00:00
parent 2d3712f930
commit 8d98e70e42
10 changed files with 43 additions and 118 deletions

View File

@ -121,6 +121,9 @@ class BaseCommand(object):
""" """
# Metadata about this command. # Metadata about this command.
option_list = ( option_list = (
make_option('-v', '--verbosity', action='store', dest='verbosity', default='1',
type='choice', choices=['0', '1', '2'],
help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
make_option('--settings', make_option('--settings',
help='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.'), help='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.'),
make_option('--pythonpath', make_option('--pythonpath',
@ -209,7 +212,7 @@ class BaseCommand(object):
from django.utils import translation from django.utils import translation
translation.activate('en-us') translation.activate('en-us')
except ImportError, e: except ImportError, e:
# If settings should be available, but aren't, # If settings should be available, but aren't,
# raise the error and quit. # raise the error and quit.
sys.stderr.write(self.style.ERROR(str('Error: %s\n' % e))) sys.stderr.write(self.style.ERROR(str('Error: %s\n' % e)))
sys.exit(1) sys.exit(1)

View File

@ -4,9 +4,6 @@ from optparse import make_option
class Command(NoArgsCommand): class Command(NoArgsCommand):
option_list = NoArgsCommand.option_list + ( option_list = NoArgsCommand.option_list + (
make_option('--verbosity', action='store', dest='verbosity', default='1',
type='choice', choices=['0', '1', '2'],
help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
make_option('--noinput', action='store_false', dest='interactive', default=True, make_option('--noinput', action='store_false', dest='interactive', default=True,
help='Tells Django to NOT prompt the user for input of any kind.'), help='Tells Django to NOT prompt the user for input of any kind.'),
) )

View File

@ -10,11 +10,6 @@ except NameError:
from sets import Set as set # Python 2.3 fallback from sets import Set as set # Python 2.3 fallback
class Command(BaseCommand): class Command(BaseCommand):
option_list = BaseCommand.option_list + (
make_option('--verbosity', action='store', dest='verbosity', default='1',
type='choice', choices=['0', '1', '2'],
help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
)
help = 'Installs the named fixture(s) in the database.' help = 'Installs the named fixture(s) in the database.'
args = "fixture [fixture ...]" args = "fixture [fixture ...]"
@ -28,15 +23,15 @@ class Command(BaseCommand):
verbosity = int(options.get('verbosity', 1)) verbosity = int(options.get('verbosity', 1))
show_traceback = options.get('traceback', False) show_traceback = options.get('traceback', False)
# commit is a stealth option - it isn't really useful as # commit is a stealth option - it isn't really useful as
# a command line option, but it can be useful when invoking # a command line option, but it can be useful when invoking
# loaddata from within another script. # loaddata from within another script.
# If commit=True, loaddata will use its own transaction; # If commit=True, loaddata will use its own transaction;
# if commit=False, the data load SQL will become part of # if commit=False, the data load SQL will become part of
# the transaction in place when loaddata was invoked. # the transaction in place when loaddata was invoked.
commit = options.get('commit', True) commit = options.get('commit', True)
# Keep a count of the installed objects and fixtures # Keep a count of the installed objects and fixtures
fixture_count = 0 fixture_count = 0
object_count = 0 object_count = 0
@ -151,7 +146,7 @@ class Command(BaseCommand):
transaction.rollback() transaction.rollback()
transaction.leave_transaction_management() transaction.leave_transaction_management()
return return
# If we found even one object in a fixture, we need to reset the # If we found even one object in a fixture, we need to reset the
# database sequences. # database sequences.
if object_count > 0: if object_count > 0:
@ -161,7 +156,7 @@ class Command(BaseCommand):
print "Resetting sequences" print "Resetting sequences"
for line in sequence_sql: for line in sequence_sql:
cursor.execute(line) cursor.execute(line)
if commit: if commit:
transaction.commit() transaction.commit()
transaction.leave_transaction_management() transaction.leave_transaction_management()
@ -172,7 +167,7 @@ class Command(BaseCommand):
else: else:
if verbosity > 0: if verbosity > 0:
print "Installed %d object(s) from %d fixture(s)" % (object_count, fixture_count) print "Installed %d object(s) from %d fixture(s)" % (object_count, fixture_count)
# Close the DB connection. This is required as a workaround for an # Close the DB connection. This is required as a workaround for an
# edge case in MySQL: if the same connection is used to # edge case in MySQL: if the same connection is used to
# create tables, load data, and query, the query can return # create tables, load data, and query, the query can return

View File

@ -170,9 +170,6 @@ class Command(BaseCommand):
help='Creates or updates the message files only for the given locale (e.g. pt_BR).'), help='Creates or updates the message files only for the given locale (e.g. pt_BR).'),
make_option('--domain', '-d', default='django', dest='domain', make_option('--domain', '-d', default='django', dest='domain',
help='The domain of the message files (default: "django").'), help='The domain of the message files (default: "django").'),
make_option('--verbosity', '-v', action='store', dest='verbosity',
default='1', type='choice', choices=['0', '1', '2'],
help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
make_option('--all', '-a', action='store_true', dest='all', make_option('--all', '-a', action='store_true', dest='all',
default=False, help='Reexamines all source code and templates for new translation strings and updates all message files for all available languages.'), default=False, help='Reexamines all source code and templates for new translation strings and updates all message files for all available languages.'),
make_option('--extension', '-e', dest='extensions', make_option('--extension', '-e', dest='extensions',

View File

@ -10,9 +10,6 @@ except NameError:
class Command(NoArgsCommand): class Command(NoArgsCommand):
option_list = NoArgsCommand.option_list + ( option_list = NoArgsCommand.option_list + (
make_option('--verbosity', action='store', dest='verbosity', default='1',
type='choice', choices=['0', '1', '2'],
help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
make_option('--noinput', action='store_false', dest='interactive', default=True, make_option('--noinput', action='store_false', dest='interactive', default=True,
help='Tells Django to NOT prompt the user for input of any kind.'), help='Tells Django to NOT prompt the user for input of any kind.'),
) )
@ -41,7 +38,7 @@ class Command(NoArgsCommand):
# but raises an ImportError for some reason. The only way we # but raises an ImportError for some reason. The only way we
# can do this is to check the text of the exception. Note that # can do this is to check the text of the exception. Note that
# we're a bit broad in how we check the text, because different # we're a bit broad in how we check the text, because different
# Python implementations may not use the same text. # Python implementations may not use the same text.
# CPython uses the text "No module named management" # CPython uses the text "No module named management"
# PyPy uses "No module named myproject.myapp.management" # PyPy uses "No module named myproject.myapp.management"
msg = exc.args[0] msg = exc.args[0]
@ -99,10 +96,10 @@ class Command(NoArgsCommand):
# Send the post_syncdb signal, so individual apps can do whatever they need # Send the post_syncdb signal, so individual apps can do whatever they need
# to do at this point. # to do at this point.
emit_post_sync_signal(created_models, verbosity, interactive) emit_post_sync_signal(created_models, verbosity, interactive)
# The connection may have been closed by a syncdb handler. # The connection may have been closed by a syncdb handler.
cursor = connection.cursor() cursor = connection.cursor()
# Install custom SQL for the app (but only if this # Install custom SQL for the app (but only if this
# is a model we've just created) # is a model we've just created)
for app in models.get_apps(): for app in models.get_apps():

View File

@ -4,9 +4,6 @@ import sys
class Command(BaseCommand): class Command(BaseCommand):
option_list = BaseCommand.option_list + ( option_list = BaseCommand.option_list + (
make_option('--verbosity', action='store', dest='verbosity', default='1',
type='choice', choices=['0', '1', '2'],
help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
make_option('--noinput', action='store_false', dest='interactive', default=True, make_option('--noinput', action='store_false', dest='interactive', default=True,
help='Tells Django to NOT prompt the user for input of any kind.'), help='Tells Django to NOT prompt the user for input of any kind.'),
) )
@ -20,7 +17,7 @@ class Command(BaseCommand):
verbosity = int(options.get('verbosity', 1)) verbosity = int(options.get('verbosity', 1))
interactive = options.get('interactive', True) interactive = options.get('interactive', True)
test_path = settings.TEST_RUNNER.split('.') test_path = settings.TEST_RUNNER.split('.')
# Allow for Python 2.5 relative paths # Allow for Python 2.5 relative paths
if len(test_path) > 1: if len(test_path) > 1:

View File

@ -4,10 +4,7 @@ from optparse import make_option
class Command(BaseCommand): class Command(BaseCommand):
option_list = BaseCommand.option_list + ( option_list = BaseCommand.option_list + (
make_option('--verbosity', action='store', dest='verbosity', default='1', make_option('--addrport', action='store', dest='addrport',
type='choice', choices=['0', '1', '2'],
help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
make_option('--addrport', action='store', dest='addrport',
type='string', default='', type='string', default='',
help='port number or ipaddr:port to run the server on'), help='port number or ipaddr:port to run the server on'),
) )

View File

@ -85,17 +85,13 @@ Displaying debug output
.. django-admin-option:: --verbosity <amount> .. django-admin-option:: --verbosity <amount>
Use ``--verbosity`` to specify the amount of notification and debug information Use ``--verbosity`` to specify the amount of notification and debug information
that ``django-admin.py`` should print to the console. that ``django-admin.py`` should print to the console. For more details, see the
documentation for the :ref:`default options for django-admin.py <django-admin-verbosity>`.
* ``0`` means no output.
* ``1`` means normal output (default).
* ``2`` means verbose output.
Available subcommands Available subcommands
===================== =====================
cleanup cleanup
------- -------
.. versionadded:: 1.0 .. versionadded:: 1.0
@ -122,7 +118,7 @@ Example usage::
django-admin.py compilemessages --locale=br_PT django-admin.py compilemessages --locale=br_PT
createcachetable createcachetable
---------------- ----------------
.. django-admin:: createcachetable <tablename> .. django-admin:: createcachetable <tablename>
@ -133,7 +129,7 @@ backend. See :ref:`topics-cache` for more information.
createsuperuser createsuperuser
--------------- ---------------
.. django-admin:: createsuperuser .. django-admin:: createsuperuser
.. versionadded:: 1.0 .. versionadded:: 1.0
@ -182,7 +178,7 @@ diffsettings
.. django-admin:: diffsettings .. django-admin:: diffsettings
Displays differences between the current settings file and Django's default Displays differences between the current settings file and Django's default
settings. settings.
Settings that don't appear in the defaults are followed by ``"###"``. For Settings that don't appear in the defaults are followed by ``"###"``. For
example, the default settings don't define ``ROOT_URLCONF``, so example, the default settings don't define ``ROOT_URLCONF``, so
@ -367,20 +363,6 @@ The ``dumpdata`` command can be used to generate input for ``loaddata``.
references in your data files - MySQL doesn't provide a mechanism to references in your data files - MySQL doesn't provide a mechanism to
defer checking of row constraints until a transaction is committed. defer checking of row constraints until a transaction is committed.
--verbosity
~~~~~~~~~~~
Use ``--verbosity`` to specify the amount of notification and debug information
that ``django-admin.py`` should print to the console.
* ``0`` means no output.
* ``1`` means normal output (default).
* ``2`` means verbose output.
Example usage::
django-admin.py loaddata --verbosity=2
makemessages makemessages
------------ ------------
@ -433,23 +415,9 @@ Example usage::
Use the ``--domain`` or ``-d`` option to change the domain of the messages files. Use the ``--domain`` or ``-d`` option to change the domain of the messages files.
Currently supported: Currently supported:
* ``django`` for all ``*.py`` and ``*.html`` files (default) * ``django`` for all ``*.py`` and ``*.html`` files (default)
* ``djangojs`` for ``*.js`` files * ``djangojs`` for ``*.js`` files
--verbosity
~~~~~~~~~~~
Use ``--verbosity`` or ``-v`` to specify the amount of notification and debug
information that ``django-admin.py`` should print to the console.
* ``0`` means no output.
* ``1`` means normal output (default).
* ``2`` means verbose output.
Example usage::
django-admin.py makemessages --verbosity=2
reset <appname appname ...> reset <appname appname ...>
--------------------------- ---------------------------
@ -685,20 +653,6 @@ with an appropriate extension (e.g. ``json`` or ``xml``). See the
documentation for ``loaddata`` for details on the specification of fixture documentation for ``loaddata`` for details on the specification of fixture
data files. data files.
--verbosity
~~~~~~~~~~~
Use ``--verbosity`` to specify the amount of notification and debug information
that ``django-admin.py`` should print to the console.
* ``0`` means no output.
* ``1`` means normal output (default).
* ``2`` means verbose output.
Example usage::
django-admin.py syncdb --verbosity=2
--noinput --noinput
~~~~~~~~~ ~~~~~~~~~
@ -719,20 +673,6 @@ Use the ``--noinput`` option to suppress all user prompting, such as
"Are you sure?" confirmation messages. This is useful if ``django-admin.py`` "Are you sure?" confirmation messages. This is useful if ``django-admin.py``
is being executed as an unattended, automated script. is being executed as an unattended, automated script.
--verbosity
~~~~~~~~~~~
Use ``--verbosity`` to specify the amount of notification and debug information
that ``django-admin.py`` should print to the console.
* ``0`` means no output.
* ``1`` means normal output (default).
* ``2`` means verbose output.
Example usage::
django-admin.py test --verbosity=2
testserver <fixture fixture ...> testserver <fixture fixture ...>
-------------------------------- --------------------------------
@ -793,20 +733,6 @@ To run on 1.2.3.4:7000 with a ``test`` fixture::
django-admin.py testserver --addrport 1.2.3.4:7000 test django-admin.py testserver --addrport 1.2.3.4:7000 test
--verbosity
~~~~~~~~~~~
Use ``--verbosity`` to specify the amount of notification and debug information
that ``django-admin.py`` should print to the console.
* ``0`` means no output.
* ``1`` means normal output (default).
* ``2`` means verbose output.
Example usage::
django-admin.py testserver --verbosity=2
validate validate
-------- --------
@ -861,6 +787,22 @@ By default, ``django-admin.py`` will show a simple error message whenever an
error occurs. If you specify ``--traceback``, ``django-admin.py`` will error occurs. If you specify ``--traceback``, ``django-admin.py`` will
output a full stack trace whenever an exception is raised. output a full stack trace whenever an exception is raised.
.. _django-admin-verbosity:
--verbosity
-----------
Example usage::
django-admin.py syncdb --verbosity 2
Use ``--verbosity`` to specify the amount of notification and debug information
that ``django-admin.py`` should print to the console.
* ``0`` means no output.
* ``1`` means normal output (default).
* ``2`` means verbose output.
Extra niceties Extra niceties
============== ==============
@ -887,4 +829,4 @@ distribution. It enables tab-completion of ``django-admin.py`` and
See :ref:`howto-custom-management-commands` for how to add customized actions. See :ref:`howto-custom-management-commands` for how to add customized actions.

View File

@ -212,7 +212,7 @@ Arguments sent with this signal:
``verbosity`` ``verbosity``
Indicates how much information manage.py is printing on screen. See Indicates how much information manage.py is printing on screen. See
the :djadminopt:`--verbosity`` flag for details. the :djadminopt:`--verbosity` flag for details.
Functions which listen for :data:`post_syncdb` should adjust what they Functions which listen for :data:`post_syncdb` should adjust what they
output to the screen based on the value of this argument. output to the screen based on the value of this argument.

View File

@ -142,12 +142,12 @@ def django_tests(verbosity, interactive, test_labels):
if not test_labels or model_name in test_labels: if not test_labels or model_name in test_labels:
extra_tests.append(InvalidModelTestCase(model_label)) extra_tests.append(InvalidModelTestCase(model_label))
try: try:
# Invalid models are not working apps, so we cannot pass them into # Invalid models are not working apps, so we cannot pass them into
# the test runner with the other test_labels # the test runner with the other test_labels
test_labels.remove(model_name) test_labels.remove(model_name)
except ValueError: except ValueError:
pass pass
# Run the test suite, including the extra validation tests. # Run the test suite, including the extra validation tests.
from django.test.simple import run_tests from django.test.simple import run_tests
failures = run_tests(test_labels, verbosity=verbosity, interactive=interactive, extra_tests=extra_tests) failures = run_tests(test_labels, verbosity=verbosity, interactive=interactive, extra_tests=extra_tests)