Commit 4a03d348 authored by Tim Graham's avatar Tim Graham
Browse files

Removed BaseCommand.requires_model_validation per deprecation timeline.

parent 18192b9f
Loading
Loading
Loading
Loading
+3 −42
Original line number Diff line number Diff line
@@ -191,18 +191,6 @@ class BaseCommand(object):
        is the list of application's configuration provided by the
        app registry.

    ``requires_model_validation``
        DEPRECATED - This value will only be used if requires_system_checks
        has not been provided. Defining both ``requires_system_checks`` and
        ``requires_model_validation`` will result in an error.

        A boolean; if ``True``, validation of installed models will be
        performed prior to executing the command. Default value is
        ``True``. To validate an individual application's models
        rather than all applications' models, call
        ``self.validate(app_config)`` from ``handle()``, where ``app_config``
        is the application's configuration provided by the app registry.

    ``leave_locale_alone``
        A boolean indicating whether the locale set in settings should be
        preserved during the execution of the command instead of translations
@@ -230,11 +218,7 @@ class BaseCommand(object):
    can_import_settings = True
    output_transaction = False  # Whether to wrap the output in a "BEGIN; COMMIT;"
    leave_locale_alone = False

    # Uncomment the following line of code after deprecation plan for
    # requires_model_validation comes to completion:
    #
    # requires_system_checks = True
    requires_system_checks = True

    def __init__(self, stdout=None, stderr=None, no_color=False):
        self.stdout = OutputWrapper(stdout or sys.stdout)
@@ -245,29 +229,6 @@ class BaseCommand(object):
            self.style = color_style()
            self.stderr.style_func = self.style.ERROR

        # `requires_model_validation` is deprecated in favor of
        # `requires_system_checks`. If both options are present, an error is
        # raised. Otherwise the present option is used. If none of them is
        # defined, the default value (True) is used.
        has_old_option = hasattr(self, 'requires_model_validation')
        has_new_option = hasattr(self, 'requires_system_checks')

        if has_old_option:
            warnings.warn(
                '"requires_model_validation" is deprecated '
                'in favor of "requires_system_checks".',
                RemovedInDjango19Warning)
        if has_old_option and has_new_option:
            raise ImproperlyConfigured(
                'Command %s defines both "requires_model_validation" '
                'and "requires_system_checks", which is illegal. Use only '
                '"requires_system_checks".' % self.__class__.__name__)

        self.requires_system_checks = (
            self.requires_system_checks if has_new_option else
            self.requires_model_validation if has_old_option else
            True)

    @property
    def use_argparse(self):
        return not bool(self.option_list)
@@ -404,8 +365,8 @@ class BaseCommand(object):
    def execute(self, *args, **options):
        """
        Try to execute this command, performing system checks if needed (as
        controlled by attributes ``self.requires_system_checks`` and
        ``self.requires_model_validation``, except if force-skipped).
        controlled by the ``requires_system_checks`` attribute, except if
        force-skipped).
        """
        if options.get('no_color'):
            self.style = no_style()
+1 −17
Original line number Diff line number Diff line
@@ -282,23 +282,7 @@ All attributes can be set in your derived class and can be used in
.. versionadded:: 1.7

  A boolean; if ``True``, the entire Django project will be checked for
  potential problems prior to executing the command. If
  ``requires_system_checks`` is missing, the value of
  ``requires_model_validation`` is used. If the latter flag is missing
  as well, the default value (``True``) is used. Defining both
  ``requires_system_checks`` and ``requires_model_validation`` will result
  in an error.

.. attribute:: BaseCommand.requires_model_validation

.. deprecated:: 1.7
    Replaced by ``requires_system_checks``

  A boolean; if ``True``, validation of installed models will be
  performed prior to executing the command. Default value is
  ``True``. To validate an individual application's models
  rather than all applications' models, call
  :meth:`~BaseCommand.validate` from :meth:`~BaseCommand.handle`.
  potential problems prior to executing the command. Default value is ``True``.

.. attribute:: BaseCommand.leave_locale_alone

+0 −11
Original line number Diff line number Diff line
from django.core.management.base import BaseCommand


class InvalidCommand(BaseCommand):
    help = ("Test raising an error if both requires_system_checks "
            "and requires_model_validation are defined.")
    requires_system_checks = True
    requires_model_validation = True

    def handle(self, **options):
        pass
+0 −5
Original line number Diff line number Diff line
@@ -1662,11 +1662,6 @@ class CommandTypes(AdminScriptTestCase):
        self.assertOutput(out, "EXECUTE:LabelCommand label=testlabel, options=[('no_color', False), ('pythonpath', None), ('settings', None), ('traceback', False), ('verbosity', 1)]")
        self.assertOutput(out, "EXECUTE:LabelCommand label=anotherlabel, options=[('no_color', False), ('pythonpath', None), ('settings', None), ('traceback', False), ('verbosity', 1)]")

    @ignore_warnings(category=RemovedInDjango19Warning)
    def test_requires_model_validation_and_requires_system_checks_both_defined(self):
        from .management.commands.validation_command import InvalidCommand
        self.assertRaises(ImproperlyConfigured, InvalidCommand)


class Discovery(TestCase):