mirror of
https://github.com/django/django.git
synced 2025-04-01 03:56:42 +00:00
Fixed #35429 -- Added argparse choices to --database options.
This commit is contained in:
parent
962215db13
commit
4a76ac0e9d
@ -4,7 +4,7 @@ from django.contrib.auth import get_user_model
|
|||||||
from django.contrib.auth.password_validation import validate_password
|
from django.contrib.auth.password_validation import validate_password
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.core.management.base import BaseCommand, CommandError
|
from django.core.management.base import BaseCommand, CommandError
|
||||||
from django.db import DEFAULT_DB_ALIAS
|
from django.db import DEFAULT_DB_ALIAS, connections
|
||||||
|
|
||||||
UserModel = get_user_model()
|
UserModel = get_user_model()
|
||||||
|
|
||||||
@ -32,6 +32,7 @@ class Command(BaseCommand):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--database",
|
"--database",
|
||||||
default=DEFAULT_DB_ALIAS,
|
default=DEFAULT_DB_ALIAS,
|
||||||
|
choices=tuple(connections),
|
||||||
help='Specifies the database to use. Default is "default".',
|
help='Specifies the database to use. Default is "default".',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ from django.contrib.auth.management import get_default_username
|
|||||||
from django.contrib.auth.password_validation import validate_password
|
from django.contrib.auth.password_validation import validate_password
|
||||||
from django.core import exceptions
|
from django.core import exceptions
|
||||||
from django.core.management.base import BaseCommand, CommandError
|
from django.core.management.base import BaseCommand, CommandError
|
||||||
from django.db import DEFAULT_DB_ALIAS
|
from django.db import DEFAULT_DB_ALIAS, connections
|
||||||
from django.utils.functional import cached_property
|
from django.utils.functional import cached_property
|
||||||
from django.utils.text import capfirst
|
from django.utils.text import capfirst
|
||||||
|
|
||||||
@ -56,6 +56,7 @@ class Command(BaseCommand):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--database",
|
"--database",
|
||||||
default=DEFAULT_DB_ALIAS,
|
default=DEFAULT_DB_ALIAS,
|
||||||
|
choices=tuple(connections),
|
||||||
help='Specifies the database to use. Default is "default".',
|
help='Specifies the database to use. Default is "default".',
|
||||||
)
|
)
|
||||||
for field_name in self.UserModel.REQUIRED_FIELDS:
|
for field_name in self.UserModel.REQUIRED_FIELDS:
|
||||||
|
@ -3,7 +3,7 @@ import itertools
|
|||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.core.management import BaseCommand
|
from django.core.management import BaseCommand
|
||||||
from django.db import DEFAULT_DB_ALIAS, router
|
from django.db import DEFAULT_DB_ALIAS, connections, router
|
||||||
from django.db.models.deletion import Collector
|
from django.db.models.deletion import Collector
|
||||||
|
|
||||||
|
|
||||||
@ -21,6 +21,7 @@ class Command(BaseCommand):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--database",
|
"--database",
|
||||||
default=DEFAULT_DB_ALIAS,
|
default=DEFAULT_DB_ALIAS,
|
||||||
|
choices=tuple(connections),
|
||||||
help='Nominates the database to use. Defaults to the "default" database.',
|
help='Nominates the database to use. Defaults to the "default" database.',
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
|
@ -2,6 +2,7 @@ from django.apps import apps
|
|||||||
from django.core import checks
|
from django.core import checks
|
||||||
from django.core.checks.registry import registry
|
from django.core.checks.registry import registry
|
||||||
from django.core.management.base import BaseCommand, CommandError
|
from django.core.management.base import BaseCommand, CommandError
|
||||||
|
from django.db import connections
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
@ -43,6 +44,7 @@ class Command(BaseCommand):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--database",
|
"--database",
|
||||||
action="append",
|
action="append",
|
||||||
|
choices=tuple(connections),
|
||||||
dest="databases",
|
dest="databases",
|
||||||
help="Run database related checks against these aliases.",
|
help="Run database related checks against these aliases.",
|
||||||
)
|
)
|
||||||
|
@ -30,6 +30,7 @@ class Command(BaseCommand):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--database",
|
"--database",
|
||||||
default=DEFAULT_DB_ALIAS,
|
default=DEFAULT_DB_ALIAS,
|
||||||
|
choices=tuple(connections),
|
||||||
help="Nominates a database onto which the cache tables will be "
|
help="Nominates a database onto which the cache tables will be "
|
||||||
'installed. Defaults to the "default" database.',
|
'installed. Defaults to the "default" database.',
|
||||||
)
|
)
|
||||||
|
@ -16,6 +16,7 @@ class Command(BaseCommand):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--database",
|
"--database",
|
||||||
default=DEFAULT_DB_ALIAS,
|
default=DEFAULT_DB_ALIAS,
|
||||||
|
choices=tuple(connections),
|
||||||
help=(
|
help=(
|
||||||
"Nominates a database onto which to open a shell. Defaults to the "
|
"Nominates a database onto which to open a shell. Defaults to the "
|
||||||
'"default" database.'
|
'"default" database.'
|
||||||
|
@ -6,7 +6,7 @@ from django.apps import apps
|
|||||||
from django.core import serializers
|
from django.core import serializers
|
||||||
from django.core.management.base import BaseCommand, CommandError
|
from django.core.management.base import BaseCommand, CommandError
|
||||||
from django.core.management.utils import parse_apps_and_model_labels
|
from django.core.management.utils import parse_apps_and_model_labels
|
||||||
from django.db import DEFAULT_DB_ALIAS, router
|
from django.db import DEFAULT_DB_ALIAS, connections, router
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import bz2
|
import bz2
|
||||||
@ -56,6 +56,7 @@ class Command(BaseCommand):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--database",
|
"--database",
|
||||||
default=DEFAULT_DB_ALIAS,
|
default=DEFAULT_DB_ALIAS,
|
||||||
|
choices=tuple(connections),
|
||||||
help="Nominates a specific database to dump fixtures from. "
|
help="Nominates a specific database to dump fixtures from. "
|
||||||
'Defaults to the "default" database.',
|
'Defaults to the "default" database.',
|
||||||
)
|
)
|
||||||
|
@ -25,6 +25,7 @@ class Command(BaseCommand):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--database",
|
"--database",
|
||||||
default=DEFAULT_DB_ALIAS,
|
default=DEFAULT_DB_ALIAS,
|
||||||
|
choices=tuple(connections),
|
||||||
help='Nominates a database to flush. Defaults to the "default" database.',
|
help='Nominates a database to flush. Defaults to the "default" database.',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@ class Command(BaseCommand):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--database",
|
"--database",
|
||||||
default=DEFAULT_DB_ALIAS,
|
default=DEFAULT_DB_ALIAS,
|
||||||
|
choices=tuple(connections),
|
||||||
help=(
|
help=(
|
||||||
'Nominates a database to introspect. Defaults to using the "default" '
|
'Nominates a database to introspect. Defaults to using the "default" '
|
||||||
"database."
|
"database."
|
||||||
|
@ -55,6 +55,7 @@ class Command(BaseCommand):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--database",
|
"--database",
|
||||||
default=DEFAULT_DB_ALIAS,
|
default=DEFAULT_DB_ALIAS,
|
||||||
|
choices=tuple(connections),
|
||||||
help=(
|
help=(
|
||||||
"Nominates a specific database to load fixtures into. Defaults to the "
|
"Nominates a specific database to load fixtures into. Defaults to the "
|
||||||
'"default" database.'
|
'"default" database.'
|
||||||
|
@ -47,6 +47,7 @@ class Command(BaseCommand):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--database",
|
"--database",
|
||||||
default=DEFAULT_DB_ALIAS,
|
default=DEFAULT_DB_ALIAS,
|
||||||
|
choices=tuple(connections),
|
||||||
help=(
|
help=(
|
||||||
'Nominates a database to synchronize. Defaults to the "default" '
|
'Nominates a database to synchronize. Defaults to the "default" '
|
||||||
"database."
|
"database."
|
||||||
|
@ -19,6 +19,7 @@ class Command(BaseCommand):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--database",
|
"--database",
|
||||||
default=DEFAULT_DB_ALIAS,
|
default=DEFAULT_DB_ALIAS,
|
||||||
|
choices=tuple(connections),
|
||||||
help=(
|
help=(
|
||||||
"Nominates a database to show migrations for. Defaults to the "
|
"Nominates a database to show migrations for. Defaults to the "
|
||||||
'"default" database.'
|
'"default" database.'
|
||||||
|
@ -16,6 +16,7 @@ class Command(BaseCommand):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--database",
|
"--database",
|
||||||
default=DEFAULT_DB_ALIAS,
|
default=DEFAULT_DB_ALIAS,
|
||||||
|
choices=tuple(connections),
|
||||||
help=(
|
help=(
|
||||||
'Nominates a database to print the SQL for. Defaults to the "default" '
|
'Nominates a database to print the SQL for. Defaults to the "default" '
|
||||||
"database."
|
"database."
|
||||||
|
@ -19,6 +19,7 @@ class Command(BaseCommand):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--database",
|
"--database",
|
||||||
default=DEFAULT_DB_ALIAS,
|
default=DEFAULT_DB_ALIAS,
|
||||||
|
choices=tuple(connections),
|
||||||
help=(
|
help=(
|
||||||
'Nominates a database to create SQL for. Defaults to the "default" '
|
'Nominates a database to create SQL for. Defaults to the "default" '
|
||||||
"database."
|
"database."
|
||||||
|
@ -14,6 +14,7 @@ class Command(AppCommand):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--database",
|
"--database",
|
||||||
default=DEFAULT_DB_ALIAS,
|
default=DEFAULT_DB_ALIAS,
|
||||||
|
choices=tuple(connections),
|
||||||
help=(
|
help=(
|
||||||
'Nominates a database to print the SQL for. Defaults to the "default" '
|
'Nominates a database to print the SQL for. Defaults to the "default" '
|
||||||
"database."
|
"database."
|
||||||
|
@ -2301,6 +2301,35 @@ class Discovery(SimpleTestCase):
|
|||||||
self.assertEqual(out.getvalue().strip(), "simple_app")
|
self.assertEqual(out.getvalue().strip(), "simple_app")
|
||||||
|
|
||||||
|
|
||||||
|
class CommandDBOptionChoiceTests(SimpleTestCase):
|
||||||
|
def test_invalid_choice_db_option(self):
|
||||||
|
expected_error = (
|
||||||
|
"Error: argument --database: invalid choice: "
|
||||||
|
"'deflaut' (choose from 'default', 'other')"
|
||||||
|
)
|
||||||
|
args = [
|
||||||
|
"changepassword",
|
||||||
|
"createsuperuser",
|
||||||
|
"remove_stale_contenttypes",
|
||||||
|
"check",
|
||||||
|
"createcachetable",
|
||||||
|
"dbshell",
|
||||||
|
"flush",
|
||||||
|
"dumpdata",
|
||||||
|
"inspectdb",
|
||||||
|
"loaddata",
|
||||||
|
"showmigrations",
|
||||||
|
"sqlflush",
|
||||||
|
"sqlmigrate",
|
||||||
|
"sqlsequencereset",
|
||||||
|
"migrate",
|
||||||
|
]
|
||||||
|
|
||||||
|
for arg in args:
|
||||||
|
with self.assertRaisesMessage(CommandError, expected_error):
|
||||||
|
call_command(arg, "--database", "deflaut", verbosity=0)
|
||||||
|
|
||||||
|
|
||||||
class ArgumentOrder(AdminScriptTestCase):
|
class ArgumentOrder(AdminScriptTestCase):
|
||||||
"""Tests for 2-stage argument parsing scheme.
|
"""Tests for 2-stage argument parsing scheme.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user