summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2015-01-17 20:42:41 -0500
committerTim Graham <timograham@gmail.com>2015-01-19 11:12:57 -0500
commit33457cd3b0da69320d3f66bb6d5a673950c5032f (patch)
treec69fca5e8972e75e15c800901984c017e69ca708
parent5008a4db440c8f7d108a6979b959025ffb5789ba (diff)
Removed IPAddressField per deprecation timeline; refs #20439.
-rw-r--r--django/db/models/fields/__init__.py13
-rw-r--r--django/forms/fields.py18
-rw-r--r--docs/ref/checks.txt5
-rw-r--r--docs/ref/forms/fields.txt16
-rw-r--r--docs/ref/models/fields.txt12
-rw-r--r--docs/releases/1.4.11.txt2
-rw-r--r--docs/releases/1.5.6.txt2
-rw-r--r--docs/releases/1.6.3.txt2
-rw-r--r--docs/releases/1.6.txt6
-rw-r--r--docs/releases/1.7.txt4
-rw-r--r--tests/expressions_case/models.py1
-rw-r--r--tests/expressions_case/tests.py15
-rw-r--r--tests/forms_tests/tests/test_error_messages.py15
-rw-r--r--tests/forms_tests/tests/test_extra.py29
-rw-r--r--tests/inspectdb/models.py1
-rw-r--r--tests/inspectdb/tests.py2
-rw-r--r--tests/invalid_models_tests/test_deprecated_fields.py22
-rw-r--r--tests/migrations/deprecated_field_migrations/0001_initial.py20
-rw-r--r--tests/migrations/deprecated_field_migrations/0002_remove_ipaddressfield_ip.py18
-rw-r--r--tests/migrations/deprecated_field_migrations/__init__.py0
-rw-r--r--tests/migrations/test_deprecated_fields.py22
-rw-r--r--tests/model_fields/models.py20
-rw-r--r--tests/model_fields/tests.py18
-rw-r--r--tests/serializers_regress/models.py8
-rw-r--r--tests/serializers_regress/tests.py7
25 files changed, 117 insertions, 161 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index d5dfac733f..d2493dbee0 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -1894,13 +1894,13 @@ class BigIntegerField(IntegerField):
class IPAddressField(Field):
empty_strings_allowed = False
description = _("IPv4 address")
- system_check_deprecated_details = {
+ system_check_removed_details = {
'msg': (
- 'IPAddressField has been deprecated. Support for it (except in '
- 'historical migrations) will be removed in Django 1.9.'
+ 'IPAddressField has been removed except for support in '
+ 'historical migrations.'
),
'hint': 'Use GenericIPAddressField instead.',
- 'id': 'fields.W900',
+ 'id': 'fields.E900',
}
def __init__(self, *args, **kwargs):
@@ -1921,11 +1921,6 @@ class IPAddressField(Field):
def get_internal_type(self):
return "IPAddressField"
- def formfield(self, **kwargs):
- defaults = {'form_class': forms.IPAddressField}
- defaults.update(kwargs)
- return super(IPAddressField, self).formfield(**defaults)
-
class GenericIPAddressField(Field):
empty_strings_allowed = False
diff --git a/django/forms/fields.py b/django/forms/fields.py
index ff8d9d826a..4f0ba23052 100644
--- a/django/forms/fields.py
+++ b/django/forms/fields.py
@@ -27,7 +27,7 @@ from django.utils import formats
from django.utils.encoding import smart_text, force_str, force_text
from django.utils.ipv6 import clean_ipv6_address
from django.utils.dateparse import parse_duration
-from django.utils.deprecation import RemovedInDjango19Warning, RemovedInDjango20Warning, RenameMethodsBase
+from django.utils.deprecation import RemovedInDjango20Warning, RenameMethodsBase
from django.utils.duration import duration_string
from django.utils import six
from django.utils.six.moves.urllib.parse import urlsplit, urlunsplit
@@ -43,7 +43,7 @@ __all__ = (
'RegexField', 'EmailField', 'FileField', 'ImageField', 'URLField',
'BooleanField', 'NullBooleanField', 'ChoiceField', 'MultipleChoiceField',
'ComboField', 'MultiValueField', 'FloatField', 'DecimalField',
- 'SplitDateTimeField', 'IPAddressField', 'GenericIPAddressField', 'FilePathField',
+ 'SplitDateTimeField', 'GenericIPAddressField', 'FilePathField',
'SlugField', 'TypedChoiceField', 'TypedMultipleChoiceField', 'UUIDField',
)
@@ -1206,20 +1206,6 @@ class SplitDateTimeField(MultiValueField):
return None
-class IPAddressField(CharField):
- default_validators = [validators.validate_ipv4_address]
-
- def __init__(self, *args, **kwargs):
- warnings.warn("IPAddressField has been deprecated. Use GenericIPAddressField instead.",
- RemovedInDjango19Warning)
- super(IPAddressField, self).__init__(*args, **kwargs)
-
- def to_python(self, value):
- if value in self.empty_values:
- return ''
- return value.strip()
-
-
class GenericIPAddressField(CharField):
def __init__(self, protocol='both', unpack_ipv4=False, *args, **kwargs):
self.unpack_ipv4 = unpack_ipv4
diff --git a/docs/ref/checks.txt b/docs/ref/checks.txt
index b519b0afab..03f280bd2e 100644
--- a/docs/ref/checks.txt
+++ b/docs/ref/checks.txt
@@ -95,8 +95,11 @@ Fields
* **fields.E160**: The options ``auto_now``, ``auto_now_add``, and ``default``
are mutually exclusive. Only one of these options may be present.
* **fields.W161**: Fixed default value provided.
+* **fields.E900**: ``IPAddressField`` has been removed except for support in
+ historical migrations.
* **fields.W900**: ``IPAddressField`` has been deprecated. Support for it
- (except in historical migrations) will be removed in Django 1.9.
+ (except in historical migrations) will be removed in Django 1.9. *This check
+ appeared in Django 1.7 and 1.8*.
File Fields
~~~~~~~~~~~
diff --git a/docs/ref/forms/fields.txt b/docs/ref/forms/fields.txt
index eee3f9f9b8..0a80a3c9f3 100644
--- a/docs/ref/forms/fields.txt
+++ b/docs/ref/forms/fields.txt
@@ -719,22 +719,6 @@ For each field, we describe the default widget used if you don't specify
These control the range of values permitted in the field.
-``IPAddressField``
-~~~~~~~~~~~~~~~~~~
-
-.. class:: IPAddressField(**kwargs)
-
- .. deprecated:: 1.7
- This field has been deprecated in favor of
- :class:`~django.forms.GenericIPAddressField`.
-
- * Default widget: :class:`TextInput`
- * Empty value: ``''`` (an empty string)
- * Normalizes to: A Unicode object.
- * Validates that the given value is a valid IPv4 address, using a regular
- expression.
- * Error message keys: ``required``, ``invalid``
-
``GenericIPAddressField``
~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/docs/ref/models/fields.txt b/docs/ref/models/fields.txt
index 3fd9d0aace..6068fe0f7c 100644
--- a/docs/ref/models/fields.txt
+++ b/docs/ref/models/fields.txt
@@ -892,18 +892,6 @@ An integer. Values from ``-2147483648`` to ``2147483647`` are safe in all
databases supported by Django. The default form widget for this field is a
:class:`~django.forms.TextInput`.
-``IPAddressField``
-------------------
-
-.. class:: IPAddressField([**options])
-
-.. deprecated:: 1.7
- This field has been deprecated in favor of
- :class:`~django.db.models.GenericIPAddressField`.
-
-An IP address, in string format (e.g. "192.0.2.30"). The default form widget
-for this field is a :class:`~django.forms.TextInput`.
-
``GenericIPAddressField``
-------------------------
diff --git a/docs/releases/1.4.11.txt b/docs/releases/1.4.11.txt
index 8cfcdbaeed..d6d65f7789 100644
--- a/docs/releases/1.4.11.txt
+++ b/docs/releases/1.4.11.txt
@@ -96,7 +96,7 @@ field classes did not correctly convert their arguments:
* :class:`~django.db.models.FilePathField`
* :class:`~django.db.models.GenericIPAddressField`
-* :class:`~django.db.models.IPAddressField`
+* ``IPAddressField``
These three fields have been updated to convert their arguments to the
correct types before querying.
diff --git a/docs/releases/1.5.6.txt b/docs/releases/1.5.6.txt
index 3bffb1c7ad..7c3cd3a75d 100644
--- a/docs/releases/1.5.6.txt
+++ b/docs/releases/1.5.6.txt
@@ -95,7 +95,7 @@ field classes did not correctly convert their arguments:
* :class:`~django.db.models.FilePathField`
* :class:`~django.db.models.GenericIPAddressField`
-* :class:`~django.db.models.IPAddressField`
+* ``IPAddressField``
These three fields have been updated to convert their arguments to the
correct types before querying.
diff --git a/docs/releases/1.6.3.txt b/docs/releases/1.6.3.txt
index a3eada7cf2..80438acb4b 100644
--- a/docs/releases/1.6.3.txt
+++ b/docs/releases/1.6.3.txt
@@ -95,7 +95,7 @@ field classes did not correctly convert their arguments:
* :class:`~django.db.models.FilePathField`
* :class:`~django.db.models.GenericIPAddressField`
-* :class:`~django.db.models.IPAddressField`
+* ``IPAddressField``
These three fields have been updated to convert their arguments to the
correct types before querying.
diff --git a/docs/releases/1.6.txt b/docs/releases/1.6.txt
index 538394b2a3..01a11d9a96 100644
--- a/docs/releases/1.6.txt
+++ b/docs/releases/1.6.txt
@@ -876,10 +876,8 @@ Miscellaneous
:class:`~django.forms.ModelMultipleChoiceField`.
* Some :attr:`~django.forms.Field.error_messages` for
- :class:`~django.forms.IntegerField`,
- :class:`~django.forms.EmailField`,
- :class:`~django.forms.IPAddressField`,
- :class:`~django.forms.GenericIPAddressField`, and
+ :class:`~django.forms.IntegerField`, :class:`~django.forms.EmailField`,
+ ``IPAddressField``, :class:`~django.forms.GenericIPAddressField`, and
:class:`~django.forms.SlugField` have been suppressed because they
duplicated error messages already provided by validators tied to the fields.
diff --git a/docs/releases/1.7.txt b/docs/releases/1.7.txt
index 09b967dfe5..63aa7722b8 100644
--- a/docs/releases/1.7.txt
+++ b/docs/releases/1.7.txt
@@ -1591,8 +1591,8 @@ better handle the case of selectively showing inlines on a ``ModelAdmin``.
``IPAddressField``
~~~~~~~~~~~~~~~~~~
-The :class:`django.db.models.IPAddressField` and
-:class:`django.forms.IPAddressField` fields have been deprecated in favor of
+The ``django.db.models.IPAddressField`` and ``django.forms.IPAddressField``
+fields have been deprecated in favor of
:class:`django.db.models.GenericIPAddressField` and
:class:`django.forms.GenericIPAddressField`.
diff --git a/tests/expressions_case/models.py b/tests/expressions_case/models.py
index b1b24e05fa..1a35d544e7 100644
--- a/tests/expressions_case/models.py
+++ b/tests/expressions_case/models.py
@@ -29,7 +29,6 @@ class CaseTestModel(models.Model):
float = models.FloatField(null=True, db_column='float_field')
if Image:
image = models.ImageField(null=True)
- ip_address = models.IPAddressField(null=True)
generic_ip_address = models.GenericIPAddressField(null=True)
null_boolean = models.NullBooleanField()
positive_integer = models.PositiveIntegerField(null=True)
diff --git a/tests/expressions_case/tests.py b/tests/expressions_case/tests.py
index 9636930e05..0790b7b080 100644
--- a/tests/expressions_case/tests.py
+++ b/tests/expressions_case/tests.py
@@ -752,21 +752,6 @@ class CaseExpressionTests(TestCase):
transform=lambda o: (o.integer, six.text_type(o.image))
)
- def test_update_ip_address(self):
- CaseTestModel.objects.update(
- ip_address=Case(
- # fails on postgresql if output_field is not set explicitly
- When(integer=1, then=Value('1.1.1.1')),
- When(integer=2, then=Value('2.2.2.2')),
- output_field=models.IPAddressField(),
- ),
- )
- self.assertQuerysetEqual(
- CaseTestModel.objects.all().order_by('pk'),
- [(1, '1.1.1.1'), (2, '2.2.2.2'), (3, None), (2, '2.2.2.2'), (3, None), (3, None), (4, None)],
- transform=attrgetter('integer', 'ip_address')
- )
-
def test_update_generic_ip_address(self):
CaseTestModel.objects.update(
generic_ip_address=Case(
diff --git a/tests/forms_tests/tests/test_error_messages.py b/tests/forms_tests/tests/test_error_messages.py
index 798f11ba1a..5f79d4aa95 100644
--- a/tests/forms_tests/tests/test_error_messages.py
+++ b/tests/forms_tests/tests/test_error_messages.py
@@ -5,12 +5,11 @@ from django.core.files.uploadedfile import SimpleUploadedFile
from django.forms import (
BooleanField, CharField, ChoiceField, DateField, DateTimeField,
DecimalField, EmailField, FileField, FloatField, Form,
- GenericIPAddressField, IntegerField, IPAddressField, ModelChoiceField,
+ GenericIPAddressField, IntegerField, ModelChoiceField,
ModelMultipleChoiceField, MultipleChoiceField, RegexField,
SplitDateTimeField, TimeField, URLField, utils, ValidationError,
)
-from django.test import ignore_warnings, TestCase
-from django.utils.deprecation import RemovedInDjango19Warning
+from django.test import TestCase
from django.utils.safestring import mark_safe
from django.utils.encoding import python_2_unicode_compatible
@@ -197,16 +196,6 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
self.assertFormErrors(['REQUIRED'], f.clean, '')
self.assertFormErrors(['INVALID DATE', 'INVALID TIME'], f.clean, ['a', 'b'])
- @ignore_warnings(category=RemovedInDjango19Warning)
- def test_ipaddressfield(self):
- e = {
- 'required': 'REQUIRED',
- 'invalid': 'INVALID IP ADDRESS',
- }
- f = IPAddressField(error_messages=e)
- self.assertFormErrors(['REQUIRED'], f.clean, '')
- self.assertFormErrors(['INVALID IP ADDRESS'], f.clean, '127.0.0')
-
def test_generic_ipaddressfield(self):
e = {
'required': 'REQUIRED',
diff --git a/tests/forms_tests/tests/test_extra.py b/tests/forms_tests/tests/test_extra.py
index d172e17cd9..5599ec6ccf 100644
--- a/tests/forms_tests/tests/test_extra.py
+++ b/tests/forms_tests/tests/test_extra.py
@@ -5,17 +5,16 @@ import datetime
from django.forms import (
CharField, DateField, EmailField, FileField, Form, GenericIPAddressField,
- HiddenInput, ImageField, IPAddressField, MultipleChoiceField,
- MultiValueField, MultiWidget, PasswordInput, SelectMultiple, SlugField,
- SplitDateTimeField, SplitDateTimeWidget, TextInput, URLField,
+ HiddenInput, ImageField, MultipleChoiceField, MultiValueField, MultiWidget,
+ PasswordInput, SelectMultiple, SlugField, SplitDateTimeField,
+ SplitDateTimeWidget, TextInput, URLField,
)
from django.forms.extras import SelectDateWidget
from django.forms.utils import ErrorList
-from django.test import TestCase, ignore_warnings, override_settings
+from django.test import TestCase, override_settings
from django.utils import six
from django.utils import translation
from django.utils.dates import MONTHS_AP
-from django.utils.deprecation import RemovedInDjango19Warning
from django.utils.encoding import force_text, smart_text, python_2_unicode_compatible
from .test_error_messages import AssertFormErrorsMixin
@@ -483,26 +482,6 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin):
self.assertEqual(f.cleaned_data['field1'], 'some text,JP,2007-04-25 06:24:00')
- @ignore_warnings(category=RemovedInDjango19Warning)
- def test_ipaddress(self):
- f = IPAddressField()
- self.assertFormErrors(['This field is required.'], f.clean, '')
- self.assertFormErrors(['This field is required.'], f.clean, None)
- self.assertEqual(f.clean(' 127.0.0.1'), '127.0.0.1')
- self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, 'foo')
- self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '127.0.0.')
- self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '1.2.3.4.5')
- self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '256.125.1.5')
-
- f = IPAddressField(required=False)
- self.assertEqual(f.clean(''), '')
- self.assertEqual(f.clean(None), '')
- self.assertEqual(f.clean(' 127.0.0.1'), '127.0.0.1')
- self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, 'foo')
- self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '127.0.0.')
- self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '1.2.3.4.5')
- self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '256.125.1.5')
-
def test_generic_ipaddress_invalid_arguments(self):
self.assertRaises(ValueError, GenericIPAddressField, protocol="hamster")
self.assertRaises(ValueError, GenericIPAddressField, protocol="ipv4", unpack_ipv4=True)
diff --git a/tests/inspectdb/models.py b/tests/inspectdb/models.py
index 9cc0a196a5..5c968c6f9f 100644
--- a/tests/inspectdb/models.py
+++ b/tests/inspectdb/models.py
@@ -59,7 +59,6 @@ class ColumnTypes(models.Model):
file_path_field = models.FilePathField()
float_field = models.FloatField()
int_field = models.IntegerField()
- ip_address_field = models.IPAddressField()
gen_ip_adress_field = models.GenericIPAddressField(protocol="ipv4")
pos_int_field = models.PositiveIntegerField()
pos_small_int_field = models.PositiveSmallIntegerField()
diff --git a/tests/inspectdb/tests.py b/tests/inspectdb/tests.py
index e35fe0bd48..70538b1bdf 100644
--- a/tests/inspectdb/tests.py
+++ b/tests/inspectdb/tests.py
@@ -61,11 +61,9 @@ class InspectDBTestCase(TestCase):
assertFieldType('file_field', "models.CharField(max_length=100)")
assertFieldType('file_path_field', "models.CharField(max_length=100)")
if connection.features.can_introspect_ip_address_field:
- assertFieldType('ip_address_field', "models.GenericIPAddressField()")
assertFieldType('gen_ip_adress_field', "models.GenericIPAddressField()")
elif (connection.features.can_introspect_max_length and
not connection.features.interprets_empty_strings_as_nulls):
- assertFieldType('ip_address_field', "models.CharField(max_length=15)")
assertFieldType('gen_ip_adress_field', "models.CharField(max_length=39)")
if (connection.features.can_introspect_max_length and
not connection.features.interprets_empty_strings_as_nulls):
diff --git a/tests/invalid_models_tests/test_deprecated_fields.py b/tests/invalid_models_tests/test_deprecated_fields.py
new file mode 100644
index 0000000000..feabe58e37
--- /dev/null
+++ b/tests/invalid_models_tests/test_deprecated_fields.py
@@ -0,0 +1,22 @@
+from django.core import checks
+from django.db import models
+
+from .base import IsolatedModelsTestCase
+
+
+class DeprecatedFieldssTests(IsolatedModelsTestCase):
+ def test_IPAddressField_deprecated(self):
+ class IPAddressModel(models.Model):
+ ip = models.IPAddressField()
+
+ model = IPAddressModel()
+ self.assertEqual(
+ model.check(),
+ [checks.Error(
+ 'IPAddressField has been removed except for support in '
+ 'historical migrations.',
+ hint='Use GenericIPAddressField instead.',
+ obj=IPAddressModel._meta.get_field('ip'),
+ id='fields.E900',
+ )],
+ )
diff --git a/tests/migrations/deprecated_field_migrations/0001_initial.py b/tests/migrations/deprecated_field_migrations/0001_initial.py
new file mode 100644
index 0000000000..724f973405
--- /dev/null
+++ b/tests/migrations/deprecated_field_migrations/0001_initial.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='IPAddressField',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('ip', models.IPAddressField(null=True, blank=True)),
+ ],
+ ),
+ ]
diff --git a/tests/migrations/deprecated_field_migrations/0002_remove_ipaddressfield_ip.py b/tests/migrations/deprecated_field_migrations/0002_remove_ipaddressfield_ip.py
new file mode 100644
index 0000000000..12e9739bca
--- /dev/null
+++ b/tests/migrations/deprecated_field_migrations/0002_remove_ipaddressfield_ip.py
@@ -0,0 +1,18 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('migrations', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='ipaddressfield',
+ name='ip',
+ ),
+ ]
diff --git a/tests/migrations/deprecated_field_migrations/__init__.py b/tests/migrations/deprecated_field_migrations/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/migrations/deprecated_field_migrations/__init__.py
diff --git a/tests/migrations/test_deprecated_fields.py b/tests/migrations/test_deprecated_fields.py
new file mode 100644
index 0000000000..2e9808e20b
--- /dev/null
+++ b/tests/migrations/test_deprecated_fields.py
@@ -0,0 +1,22 @@
+from django.core.management import call_command
+from django.test import override_settings
+
+from .test_base import MigrationTestBase
+
+
+class Tests(MigrationTestBase):
+ """
+ Deprecated model fields should still be usable in historic migrations.
+ """
+ @override_settings(MIGRATION_MODULES={"migrations": "migrations.deprecated_field_migrations"})
+ def test_migrate(self):
+ # Make sure no tables are created
+ self.assertTableNotExists("migrations_ipaddressfield")
+ # Run migration
+ call_command("migrate", verbosity=0)
+ # Make sure the right tables exist
+ self.assertTableExists("migrations_ipaddressfield")
+ # Unmigrate everything
+ call_command("migrate", "migrations", "zero", verbosity=0)
+ # Make sure it's all gone
+ self.assertTableNotExists("migrations_ipaddressfield")
diff --git a/tests/model_fields/models.py b/tests/model_fields/models.py
index 2c6b707b88..9a6a3f1f36 100644
--- a/tests/model_fields/models.py
+++ b/tests/model_fields/models.py
@@ -168,16 +168,15 @@ class VerboseNameField(models.Model):
# Don't want to depend on Pillow in this test
#field_image = models.ImageField("verbose field")
field12 = models.IntegerField("verbose field12")
- field13 = models.IPAddressField("verbose field13")
- field14 = models.GenericIPAddressField("verbose field14", protocol="ipv4")
- field15 = models.NullBooleanField("verbose field15")
- field16 = models.PositiveIntegerField("verbose field16")
- field17 = models.PositiveSmallIntegerField("verbose field17")
- field18 = models.SlugField("verbose field18")
- field19 = models.SmallIntegerField("verbose field19")
- field20 = models.TextField("verbose field20")
- field21 = models.TimeField("verbose field21")
- field22 = models.URLField("verbose field22")
+ field13 = models.GenericIPAddressField("verbose field13", protocol="ipv4")
+ field14 = models.NullBooleanField("verbose field14")
+ field15 = models.PositiveIntegerField("verbose field15")
+ field16 = models.PositiveSmallIntegerField("verbose field16")
+ field17 = models.SlugField("verbose field17")
+ field18 = models.SmallIntegerField("verbose field18")
+ field19 = models.TextField("verbose field19")
+ field20 = models.TimeField("verbose field20")
+ field21 = models.URLField("verbose field21")
class GenericIPAddress(models.Model):
@@ -323,7 +322,6 @@ class AllFieldsModel(models.Model):
file_path = models.FilePathField()
floatf = models.FloatField()
integer = models.IntegerField()
- ip_address = models.IPAddressField()
generic_ip = models.GenericIPAddressField()
null_boolean = models.NullBooleanField()
positive_integer = models.PositiveIntegerField()
diff --git a/tests/model_fields/tests.py b/tests/model_fields/tests.py
index a9ce43cae6..60a1f419ed 100644
--- a/tests/model_fields/tests.py
+++ b/tests/model_fields/tests.py
@@ -75,7 +75,7 @@ class BasicFieldTests(test.TestCase):
def test_field_verbose_name(self):
m = VerboseNameField
- for i in range(1, 23):
+ for i in range(1, 22):
self.assertEqual(m._meta.get_field('field%d' % i).verbose_name,
'verbose field%d' % i)
@@ -819,22 +819,6 @@ class PromiseTest(test.TestCase):
IPAddressField().get_prep_value(lazy_func()),
six.text_type)
- def test_IPAddressField_deprecated(self):
- class IPAddressModel(models.Model):
- ip = IPAddressField()
-
- model = IPAddressModel()
- self.assertEqual(
- model.check(),
- [checks.Warning(
- 'IPAddressField has been deprecated. Support for it '
- '(except in historical migrations) will be removed in Django 1.9.',
- hint='Use GenericIPAddressField instead.',
- obj=IPAddressModel._meta.get_field('ip'),
- id='fields.W900',
- )],
- )
-
def test_GenericIPAddressField(self):
lazy_func = lazy(lambda: '127.0.0.1', six.text_type)
self.assertIsInstance(
diff --git a/tests/serializers_regress/models.py b/tests/serializers_regress/models.py
index 49b84501bf..7c7b9f12b0 100644
--- a/tests/serializers_regress/models.py
+++ b/tests/serializers_regress/models.py
@@ -65,10 +65,6 @@ class BigIntegerData(models.Model):
# data = models.ImageField(null=True)
-class IPAddressData(models.Model):
- data = models.IPAddressField(null=True)
-
-
class GenericIPAddressData(models.Model):
data = models.GenericIPAddressField(null=True)
@@ -245,10 +241,6 @@ class IntegerPKData(models.Model):
# data = models.ImageField(primary_key=True)
-class IPAddressPKData(models.Model):
- data = models.IPAddressField(primary_key=True)
-
-
class GenericIPAddressPKData(models.Model):
data = models.GenericIPAddressField(primary_key=True)
diff --git a/tests/serializers_regress/tests.py b/tests/serializers_regress/tests.py
index 375a6a30ac..e91a1094ee 100644
--- a/tests/serializers_regress/tests.py
+++ b/tests/serializers_regress/tests.py
@@ -28,13 +28,13 @@ from django.utils import six
from django.utils.functional import curry
from .models import (BinaryData, BooleanData, CharData, DateData, DateTimeData, EmailData,
- FileData, FilePathData, DecimalData, FloatData, IntegerData, IPAddressData,
+ FileData, FilePathData, DecimalData, FloatData, IntegerData,
GenericIPAddressData, NullBooleanData, PositiveIntegerData,
PositiveSmallIntegerData, SlugData, SmallData, TextData, TimeData,
GenericData, Anchor, UniqueAnchor, FKData, M2MData, O2OData,
FKSelfData, M2MSelfData, FKDataToField, FKDataToO2O, M2MIntermediateData,
Intermediate, BooleanPKData, CharPKData, EmailPKData, FilePathPKData,
- DecimalPKData, FloatPKData, IntegerPKData, IPAddressPKData,
+ DecimalPKData, FloatPKData, IntegerPKData,
GenericIPAddressPKData, PositiveIntegerPKData,
PositiveSmallIntegerPKData, SlugPKData, SmallPKData,
AutoNowDateTimeData, ModifyingSaveData, InheritAbstractModel, BaseModel,
@@ -241,8 +241,6 @@ test_data = [
(data_obj, 82, IntegerData, 0),
(data_obj, 83, IntegerData, None),
#(XX, ImageData
- (data_obj, 90, IPAddressData, "127.0.0.1"),
- (data_obj, 91, IPAddressData, None),
(data_obj, 95, GenericIPAddressData, "fe80:1424:2223:6cff:fe8a:2e8a:2151:abcd"),
(data_obj, 96, GenericIPAddressData, None),
(data_obj, 100, NullBooleanData, True),
@@ -341,7 +339,6 @@ The end."""),
(pk_obj, 681, IntegerPKData, -123456789),
(pk_obj, 682, IntegerPKData, 0),
# (XX, ImagePKData
- (pk_obj, 690, IPAddressPKData, "127.0.0.1"),
(pk_obj, 695, GenericIPAddressPKData, "fe80:1424:2223:6cff:fe8a:2e8a:2151:abcd"),
# (pk_obj, 700, NullBooleanPKData, True),
# (pk_obj, 701, NullBooleanPKData, False),