summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2014-11-13 17:35:33 +0100
committerTim Graham <timograham@gmail.com>2014-11-13 20:12:29 +0100
commitc24a2e6cbd391c0d6359fce00e6390de9af9d2d0 (patch)
tree12eb540200eb421eb1226494bfd687191d757987
parentd5a109f6e6684b2ea8028af5c57f4257872d11aa (diff)
Fixed #23765 -- Removed BooleanField default check which often yielded false positives.
-rw-r--r--django/core/checks/__init__.py1
-rw-r--r--django/core/checks/compatibility/django_1_6_0.py41
-rw-r--r--docs/ref/checks.txt3
-rw-r--r--tests/check_framework/models.py5
-rw-r--r--tests/check_framework/tests.py30
5 files changed, 3 insertions, 77 deletions
diff --git a/django/core/checks/__init__.py b/django/core/checks/__init__.py
index f3e38448d6..e446bdc099 100644
--- a/django/core/checks/__init__.py
+++ b/django/core/checks/__init__.py
@@ -7,7 +7,6 @@ from .messages import (CheckMessage,
from .registry import register, run_checks, tag_exists, Tags
# Import these to force registration of checks
-import django.core.checks.compatibility.django_1_6_0 # NOQA
import django.core.checks.compatibility.django_1_7_0 # NOQA
import django.core.checks.model_checks # NOQA
import django.core.checks.security.base # NOQA
diff --git a/django/core/checks/compatibility/django_1_6_0.py b/django/core/checks/compatibility/django_1_6_0.py
deleted file mode 100644
index 513169babe..0000000000
--- a/django/core/checks/compatibility/django_1_6_0.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# -*- encoding: utf-8 -*-
-from __future__ import unicode_literals
-
-from django.apps import apps
-
-from .. import Warning, register, Tags
-
-
-@register(Tags.compatibility)
-def check_1_6_compatibility(**kwargs):
- errors = []
- errors.extend(_check_boolean_field_default_value(**kwargs))
- return errors
-
-
-def _check_boolean_field_default_value(app_configs=None, **kwargs):
- """
- Checks if there are any BooleanFields without a default value, &
- warns the user that the default has changed from False to None.
- """
- from django.db import models
-
- problem_fields = [
- field
- for model in apps.get_models(**kwargs)
- if app_configs is None or model._meta.app_config in app_configs
- for field in model._meta.local_fields
- if isinstance(field, models.BooleanField) and not field.has_default()
- ]
-
- return [
- Warning(
- "BooleanField does not have a default value.",
- hint=("Django 1.6 changed the default value of BooleanField from False to None. "
- "See https://docs.djangoproject.com/en/1.6/ref/models/fields/#booleanfield "
- "for more information."),
- obj=field,
- id='1_6.W002',
- )
- for field in problem_fields
- ]
diff --git a/docs/ref/checks.txt b/docs/ref/checks.txt
index 04c7dc4a7d..f1b34fade4 100644
--- a/docs/ref/checks.txt
+++ b/docs/ref/checks.txt
@@ -168,7 +168,8 @@ that might occur as a result of a version upgrade.
* **1_6.W001**: Some project unit tests may not execute as expected. *This
check was removed in Django 1.8 due to false positives*.
-* **1_6.W002**: ``BooleanField`` does not have a default value.
+* **1_6.W002**: ``BooleanField`` does not have a default value. *This
+ check was removed in Django 1.8 due to false positives*.
* **1_7.W001**: Django 1.7 changed the global defaults for the
``MIDDLEWARE_CLASSES.``
``django.contrib.sessions.middleware.SessionMiddleware``,
diff --git a/tests/check_framework/models.py b/tests/check_framework/models.py
index f091783098..3b17332411 100644
--- a/tests/check_framework/models.py
+++ b/tests/check_framework/models.py
@@ -7,8 +7,3 @@ from django.db import models
class SimpleModel(models.Model):
field = models.IntegerField()
manager = models.manager.Manager()
-
-
-class Book(models.Model):
- title = models.CharField(max_length=250)
- is_published = models.BooleanField(default=False)
diff --git a/tests/check_framework/tests.py b/tests/check_framework/tests.py
index 43b579d383..db06c138da 100644
--- a/tests/check_framework/tests.py
+++ b/tests/check_framework/tests.py
@@ -10,17 +10,15 @@ from django.core import checks
from django.core.checks import Error, Warning
from django.core.checks.model_checks import check_all_models
from django.core.checks.registry import CheckRegistry
-from django.core.checks.compatibility.django_1_6_0 import check_1_6_compatibility
from django.core.checks.compatibility.django_1_7_0 import check_1_7_compatibility
from django.core.management.base import CommandError
from django.core.management import call_command
from django.db import models
-from django.db.models.fields import NOT_PROVIDED
from django.test import TestCase
from django.test.utils import override_settings, override_system_checks
from django.utils.encoding import force_text
-from .models import SimpleModel, Book
+from .models import SimpleModel
class DummyObj(object):
@@ -114,32 +112,6 @@ class MessageTests(TestCase):
self.assertEqual(force_text(e), expected)
-class Django_1_6_0_CompatibilityChecks(TestCase):
-
- @override_settings(TEST_RUNNER='myapp.test.CustomRunner')
- def test_boolean_field_default_value(self):
- # We patch the field's default value to trigger the warning
- boolean_field = Book._meta.get_field('is_published')
- old_default = boolean_field.default
- try:
- boolean_field.default = NOT_PROVIDED
- errors = check_1_6_compatibility()
- expected = [
- checks.Warning(
- 'BooleanField does not have a default value.',
- hint=('Django 1.6 changed the default value of BooleanField from False to None. '
- 'See https://docs.djangoproject.com/en/1.6/ref/models/fields/#booleanfield '
- 'for more information.'),
- obj=boolean_field,
- id='1_6.W002',
- )
- ]
- self.assertEqual(errors, expected)
- finally:
- # Restore the ``default``
- boolean_field.default = old_default
-
-
class Django_1_7_0_CompatibilityChecks(TestCase):
@override_settings(MIDDLEWARE_CLASSES=('django.contrib.sessions.middleware.SessionMiddleware',))