Refs #23433 -- Removed django-admin.py entry point per deprecation timeline.
This commit is contained in:
parent
68e3ca13d7
commit
90c59b4e12
|
@ -1,21 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
# When the django-admin.py deprecation ends, remove this script.
|
|
||||||
import warnings
|
|
||||||
|
|
||||||
from django.core import management
|
|
||||||
|
|
||||||
try:
|
|
||||||
from django.utils.deprecation import RemovedInDjango40Warning
|
|
||||||
except ImportError:
|
|
||||||
raise ImportError(
|
|
||||||
'django-admin.py was deprecated in Django 3.1 and removed in Django '
|
|
||||||
'4.0. Please manually remove this script from your virtual environment '
|
|
||||||
'and use django-admin instead.'
|
|
||||||
)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
warnings.warn(
|
|
||||||
'django-admin.py is deprecated in favor of django-admin.',
|
|
||||||
RemovedInDjango40Warning,
|
|
||||||
)
|
|
||||||
management.execute_from_command_line()
|
|
|
@ -273,3 +273,5 @@ to remove usage of these features.
|
||||||
right-hand side.
|
right-hand side.
|
||||||
|
|
||||||
* The ``django.db.models.query_utils.InvalidQuery`` exception class is removed.
|
* The ``django.db.models.query_utils.InvalidQuery`` exception class is removed.
|
||||||
|
|
||||||
|
* The ``django-admin.py`` entry point is removed.
|
||||||
|
|
|
@ -36,8 +36,7 @@ _django_completion()
|
||||||
COMP_CWORD=$COMP_CWORD \
|
COMP_CWORD=$COMP_CWORD \
|
||||||
DJANGO_AUTO_COMPLETE=1 $1 ) )
|
DJANGO_AUTO_COMPLETE=1 $1 ) )
|
||||||
}
|
}
|
||||||
# When the django-admin.py deprecation ends, remove django-admin.py.
|
complete -F _django_completion -o default manage.py django-admin
|
||||||
complete -F _django_completion -o default django-admin.py manage.py django-admin
|
|
||||||
|
|
||||||
_python_django_completion()
|
_python_django_completion()
|
||||||
{
|
{
|
||||||
|
@ -45,7 +44,7 @@ _python_django_completion()
|
||||||
local PYTHON_EXE=${COMP_WORDS[0]##*/}
|
local PYTHON_EXE=${COMP_WORDS[0]##*/}
|
||||||
if echo "$PYTHON_EXE" | grep -qE "python([3-9]\.[0-9])?"; then
|
if echo "$PYTHON_EXE" | grep -qE "python([3-9]\.[0-9])?"; then
|
||||||
local PYTHON_SCRIPT=${COMP_WORDS[1]##*/}
|
local PYTHON_SCRIPT=${COMP_WORDS[1]##*/}
|
||||||
if echo "$PYTHON_SCRIPT" | grep -qE "manage\.py|django-admin(\.py)?"; then
|
if echo "$PYTHON_SCRIPT" | grep -qE "manage\.py|django-admin"; then
|
||||||
COMPREPLY=( $( COMP_WORDS=( "${COMP_WORDS[*]:1}" )
|
COMPREPLY=( $( COMP_WORDS=( "${COMP_WORDS[*]:1}" )
|
||||||
COMP_CWORD=$(( COMP_CWORD-1 ))
|
COMP_CWORD=$(( COMP_CWORD-1 ))
|
||||||
DJANGO_AUTO_COMPLETE=1 ${COMP_WORDS[*]} ) )
|
DJANGO_AUTO_COMPLETE=1 ${COMP_WORDS[*]} ) )
|
||||||
|
|
|
@ -36,8 +36,6 @@ project_urls =
|
||||||
[options]
|
[options]
|
||||||
python_requires = >=3.6
|
python_requires = >=3.6
|
||||||
packages = find:
|
packages = find:
|
||||||
# When the django-admin.py deprecation ends, remove "scripts".
|
|
||||||
scripts = django/bin/django-admin.py
|
|
||||||
include_package_data = true
|
include_package_data = true
|
||||||
zip_safe = false
|
zip_safe = false
|
||||||
install_requires =
|
install_requires =
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
import os
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
|
|
||||||
import django
|
|
||||||
from django.test import SimpleTestCase
|
|
||||||
|
|
||||||
|
|
||||||
class DeprecationTests(SimpleTestCase):
|
|
||||||
DEPRECATION_MESSAGE = (
|
|
||||||
b'RemovedInDjango40Warning: django-admin.py is deprecated in favor of '
|
|
||||||
b'django-admin.'
|
|
||||||
)
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
script_dir = os.path.abspath(os.path.join(os.path.dirname(django.__file__), 'bin'))
|
|
||||||
self.django_admin_py = os.path.join(script_dir, 'django-admin.py')
|
|
||||||
|
|
||||||
def _run_test(self, args):
|
|
||||||
p = subprocess.run(
|
|
||||||
[sys.executable, *args],
|
|
||||||
stdout=subprocess.PIPE,
|
|
||||||
stderr=subprocess.PIPE,
|
|
||||||
check=True,
|
|
||||||
)
|
|
||||||
return p.stdout, p.stderr
|
|
||||||
|
|
||||||
def test_django_admin_py_deprecated(self):
|
|
||||||
_, err = self._run_test(['-Wd', self.django_admin_py, '--version'])
|
|
||||||
self.assertIn(self.DEPRECATION_MESSAGE, err)
|
|
||||||
|
|
||||||
def test_main_not_deprecated(self):
|
|
||||||
_, err = self._run_test(['-Wd', '-m', 'django', '--version'])
|
|
||||||
self.assertNotIn(self.DEPRECATION_MESSAGE, err)
|
|
||||||
|
|
||||||
def test_django_admin_py_equivalent_main(self):
|
|
||||||
django_admin_py_out, _ = self._run_test([self.django_admin_py, '--version'])
|
|
||||||
django_out, _ = self._run_test(['-m', 'django', '--version'])
|
|
||||||
self.assertEqual(django_admin_py_out, django_out)
|
|
|
@ -167,12 +167,12 @@ class AdminScriptTestCase(SimpleTestCase):
|
||||||
##########################################################################
|
##########################################################################
|
||||||
# DJANGO ADMIN TESTS
|
# DJANGO ADMIN TESTS
|
||||||
# This first series of test classes checks the environment processing
|
# This first series of test classes checks the environment processing
|
||||||
# of the django-admin.py script
|
# of the django-admin.
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
|
|
||||||
class DjangoAdminNoSettings(AdminScriptTestCase):
|
class DjangoAdminNoSettings(AdminScriptTestCase):
|
||||||
"A series of tests for django-admin.py when there is no settings.py file."
|
"A series of tests for django-admin when there is no settings.py file."
|
||||||
|
|
||||||
def test_builtin_command(self):
|
def test_builtin_command(self):
|
||||||
"no settings: django-admin builtin commands fail with an error when no settings provided"
|
"no settings: django-admin builtin commands fail with an error when no settings provided"
|
||||||
|
@ -207,7 +207,8 @@ class DjangoAdminNoSettings(AdminScriptTestCase):
|
||||||
|
|
||||||
|
|
||||||
class DjangoAdminDefaultSettings(AdminScriptTestCase):
|
class DjangoAdminDefaultSettings(AdminScriptTestCase):
|
||||||
"""A series of tests for django-admin.py when using a settings.py file that
|
"""
|
||||||
|
A series of tests for django-admin when using a settings.py file that
|
||||||
contains the test application.
|
contains the test application.
|
||||||
"""
|
"""
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
@ -273,7 +274,8 @@ class DjangoAdminDefaultSettings(AdminScriptTestCase):
|
||||||
|
|
||||||
|
|
||||||
class DjangoAdminFullPathDefaultSettings(AdminScriptTestCase):
|
class DjangoAdminFullPathDefaultSettings(AdminScriptTestCase):
|
||||||
"""A series of tests for django-admin.py when using a settings.py file that
|
"""
|
||||||
|
A series of tests for django-admin when using a settings.py file that
|
||||||
contains the test application specified using a full path.
|
contains the test application specified using a full path.
|
||||||
"""
|
"""
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
@ -340,7 +342,8 @@ class DjangoAdminFullPathDefaultSettings(AdminScriptTestCase):
|
||||||
|
|
||||||
|
|
||||||
class DjangoAdminMinimalSettings(AdminScriptTestCase):
|
class DjangoAdminMinimalSettings(AdminScriptTestCase):
|
||||||
"""A series of tests for django-admin.py when using a settings.py file that
|
"""
|
||||||
|
A series of tests for django-admin when using a settings.py file that
|
||||||
doesn't contain the test application.
|
doesn't contain the test application.
|
||||||
"""
|
"""
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
@ -406,8 +409,9 @@ class DjangoAdminMinimalSettings(AdminScriptTestCase):
|
||||||
|
|
||||||
|
|
||||||
class DjangoAdminAlternateSettings(AdminScriptTestCase):
|
class DjangoAdminAlternateSettings(AdminScriptTestCase):
|
||||||
"""A series of tests for django-admin.py when using a settings file
|
"""
|
||||||
with a name other than 'settings.py'.
|
A series of tests for django-admin when using a settings file with a name
|
||||||
|
other than 'settings.py'.
|
||||||
"""
|
"""
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
@ -472,7 +476,8 @@ class DjangoAdminAlternateSettings(AdminScriptTestCase):
|
||||||
|
|
||||||
|
|
||||||
class DjangoAdminMultipleSettings(AdminScriptTestCase):
|
class DjangoAdminMultipleSettings(AdminScriptTestCase):
|
||||||
"""A series of tests for django-admin.py when multiple settings files
|
"""
|
||||||
|
A series of tests for django-admin when multiple settings files
|
||||||
(including the default 'settings.py') are available. The default settings
|
(including the default 'settings.py') are available. The default settings
|
||||||
file is insufficient for performing the operations described, so the
|
file is insufficient for performing the operations described, so the
|
||||||
alternate settings must be used by the running script.
|
alternate settings must be used by the running script.
|
||||||
|
@ -541,7 +546,7 @@ class DjangoAdminMultipleSettings(AdminScriptTestCase):
|
||||||
|
|
||||||
class DjangoAdminSettingsDirectory(AdminScriptTestCase):
|
class DjangoAdminSettingsDirectory(AdminScriptTestCase):
|
||||||
"""
|
"""
|
||||||
A series of tests for django-admin.py when the settings file is in a
|
A series of tests for django-admin when the settings file is in a
|
||||||
directory. (see #9751).
|
directory. (see #9751).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue