瀏覽代碼

Refs #29598 -- Removed FloatRangeField per deprecation timeline.

Mariusz Felisiak 5 年之前
父節點
當前提交
b47bb4c4a7

+ 0 - 17
django/contrib/postgres/fields/ranges.py

@@ -11,7 +11,6 @@ from .utils import AttributeSetter
 __all__ = [
     'RangeField', 'IntegerRangeField', 'BigIntegerRangeField',
     'DecimalRangeField', 'DateTimeRangeField', 'DateRangeField',
-    'FloatRangeField',
     'RangeBoundary', 'RangeOperators',
 ]
 
@@ -135,22 +134,6 @@ class DecimalRangeField(RangeField):
         return 'numrange'
 
 
-class FloatRangeField(RangeField):
-    system_check_deprecated_details = {
-        'msg': (
-            'FloatRangeField is deprecated and will be removed in Django 3.1.'
-        ),
-        'hint': 'Use DecimalRangeField instead.',
-        'id': 'fields.W902',
-    }
-    base_field = models.FloatField
-    range_type = NumericRange
-    form_field = forms.FloatRangeField
-
-    def db_type(self, connection):
-        return 'numrange'
-
-
 class DateTimeRangeField(RangeField):
     base_field = models.DateTimeField
     range_type = DateTimeTZRange

+ 1 - 15
django/contrib/postgres/forms/ranges.py

@@ -1,16 +1,13 @@
-import warnings
-
 from psycopg2.extras import DateRange, DateTimeTZRange, NumericRange
 
 from django import forms
 from django.core import exceptions
 from django.forms.widgets import MultiWidget
-from django.utils.deprecation import RemovedInDjango31Warning
 from django.utils.translation import gettext_lazy as _
 
 __all__ = [
     'BaseRangeField', 'IntegerRangeField', 'DecimalRangeField',
-    'DateTimeRangeField', 'DateRangeField', 'FloatRangeField', 'RangeWidget',
+    'DateTimeRangeField', 'DateRangeField', 'RangeWidget',
 ]
 
 
@@ -75,17 +72,6 @@ class DecimalRangeField(BaseRangeField):
     range_type = NumericRange
 
 
-class FloatRangeField(DecimalRangeField):
-    base_field = forms.FloatField
-
-    def __init__(self, **kwargs):
-        warnings.warn(
-            'FloatRangeField is deprecated in favor of DecimalRangeField.',
-            RemovedInDjango31Warning, stacklevel=2,
-        )
-        super().__init__(**kwargs)
-
-
 class DateTimeRangeField(BaseRangeField):
     default_error_messages = {'invalid': _('Enter two valid date/times.')}
     base_field = forms.DateTimeField

+ 1 - 1
docs/ref/checks.txt

@@ -174,7 +174,7 @@ Model fields
 * **fields.E901**: ``CommaSeparatedIntegerField`` is removed except for support
   in historical migrations.
 * **fields.W902**: ``FloatRangeField`` is deprecated and will be removed in
-  Django 3.1.
+  Django 3.1. *This check appeared in Django 2.2 and 3.0*.
 
 File fields
 ~~~~~~~~~~~

+ 0 - 13
docs/ref/contrib/postgres/fields.txt

@@ -661,19 +661,6 @@ excluded; that is, ``[)``.
     the database and a :class:`~psycopg2:psycopg2.extras.NumericRange` in
     Python.
 
-``FloatRangeField``
--------------------
-
-.. class:: FloatRangeField(**options)
-
-    Stores a range of floating point values. Based on a
-    :class:`~django.db.models.FloatField`. Represented by a ``numrange`` in the
-    database and a :class:`~psycopg2:psycopg2.extras.NumericRange` in Python.
-
-    .. deprecated:: 2.2
-
-        Use :class:`DecimalRangeField` instead.
-
 ``DateTimeRangeField``
 ----------------------
 

+ 0 - 13
docs/ref/contrib/postgres/forms.txt

@@ -201,19 +201,6 @@ not greater than the upper bound. All of these fields use
     :class:`~psycopg2:psycopg2.extras.NumericRange`. Default for
     :class:`~django.contrib.postgres.fields.DecimalRangeField`.
 
-``FloatRangeField``
-~~~~~~~~~~~~~~~~~~~
-
-.. class:: FloatRangeField
-
-    Based on :class:`~django.forms.FloatField` and translates its input into
-    :class:`~psycopg2:psycopg2.extras.NumericRange`. Default for
-    :class:`~django.contrib.postgres.fields.FloatRangeField`.
-
-    .. deprecated:: 2.2
-
-        Use :class:`DecimalRangeField` instead.
-
 ``DateTimeRangeField``
 ~~~~~~~~~~~~~~~~~~~~~~
 

+ 2 - 1
docs/releases/3.1.txt

@@ -230,4 +230,5 @@ in Django 3.1.
 See :ref:`deprecated-features-2.2` for details on these changes, including how
 to remove usage of these features.
 
-* ...
+* ``django.contrib.postgres.fields.FloatRangeField`` and
+  ``django.contrib.postgres.forms.FloatRangeField`` are removed.

+ 1 - 13
tests/postgres_tests/test_ranges.py

@@ -5,9 +5,8 @@ from decimal import Decimal
 from django import forms
 from django.core import exceptions, serializers
 from django.db.models import DateField, DateTimeField, F, Func, Value
-from django.test import ignore_warnings, override_settings
+from django.test import override_settings
 from django.utils import timezone
-from django.utils.deprecation import RemovedInDjango31Warning
 
 from . import PostgreSQLSimpleTestCase, PostgreSQLTestCase
 from .models import RangeLookupsModel, RangesModel
@@ -445,22 +444,11 @@ class TestFormField(PostgreSQLSimpleTestCase):
         value = field.clean(['1', '2'])
         self.assertEqual(value, NumericRange(1, 2))
 
-    @ignore_warnings(category=RemovedInDjango31Warning)
-    def test_valid_floats(self):
-        field = pg_forms.FloatRangeField()
-        value = field.clean(['1.12345', '2.001'])
-        self.assertEqual(value, NumericRange(1.12345, 2.001))
-
     def test_valid_decimal(self):
         field = pg_forms.DecimalRangeField()
         value = field.clean(['1.12345', '2.001'])
         self.assertEqual(value, NumericRange(Decimal('1.12345'), Decimal('2.001')))
 
-    def test_float_range_field_deprecation(self):
-        msg = 'FloatRangeField is deprecated in favor of DecimalRangeField.'
-        with self.assertRaisesMessage(RemovedInDjango31Warning, msg):
-            pg_forms.FloatRangeField()
-
     def test_valid_timestamps(self):
         field = pg_forms.DateTimeRangeField()
         value = field.clean(['01/01/2014 00:00:00', '02/02/2014 12:12:12'])