Loading django/contrib/postgres/forms/ranges.py +9 −2 Original line number Diff line number Diff line Loading @@ -22,10 +22,17 @@ class BaseRangeField(forms.MultiValueField): super(BaseRangeField, self).__init__(**kwargs) def prepare_value(self, value): lower_base, upper_base = self.fields if isinstance(value, self.range_type): return [value.lower, value.upper] return [ lower_base.prepare_value(value.lower), upper_base.prepare_value(value.upper), ] if value is None: return [None, None] return [ lower_base.prepare_value(None), upper_base.prepare_value(None), ] return value def compress(self, values): Loading docs/releases/1.8.3.txt +2 −1 Original line number Diff line number Diff line Loading @@ -9,4 +9,5 @@ Django 1.8.3 fixes several bugs in 1.8.2. Bugfixes ======== * ... * Fixed ``BaseRangeField.prepare_value()`` to use each ``base_field``’s ``prepare_value()`` method (:ticket:`24841`). tests/postgres_tests/test_ranges.py +9 −1 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ import unittest from django import forms from django.core import exceptions, serializers from django.db import connection from django.test import TestCase from django.test import TestCase, override_settings from django.utils import timezone from . import PostgresSQLTestCase Loading Loading @@ -474,6 +474,14 @@ class TestFormField(PostgresSQLTestCase): value = field.clean(['2013-04-09 11:45', '']) self.assertEqual(value, DateTimeTZRange(datetime.datetime(2013, 4, 9, 11, 45), None)) @override_settings(USE_TZ=True, TIME_ZONE='Africa/Johannesburg') def test_datetime_prepare_value(self): field = pg_forms.DateTimeRangeField() value = field.prepare_value( DateTimeTZRange(datetime.datetime(2015, 5, 22, 16, 6, 33, tzinfo=timezone.utc), None) ) self.assertEqual(value, [datetime.datetime(2015, 5, 22, 18, 6, 33), None]) def test_model_field_formfield_integer(self): model_field = pg_fields.IntegerRangeField() form_field = model_field.formfield() Loading Loading
django/contrib/postgres/forms/ranges.py +9 −2 Original line number Diff line number Diff line Loading @@ -22,10 +22,17 @@ class BaseRangeField(forms.MultiValueField): super(BaseRangeField, self).__init__(**kwargs) def prepare_value(self, value): lower_base, upper_base = self.fields if isinstance(value, self.range_type): return [value.lower, value.upper] return [ lower_base.prepare_value(value.lower), upper_base.prepare_value(value.upper), ] if value is None: return [None, None] return [ lower_base.prepare_value(None), upper_base.prepare_value(None), ] return value def compress(self, values): Loading
docs/releases/1.8.3.txt +2 −1 Original line number Diff line number Diff line Loading @@ -9,4 +9,5 @@ Django 1.8.3 fixes several bugs in 1.8.2. Bugfixes ======== * ... * Fixed ``BaseRangeField.prepare_value()`` to use each ``base_field``’s ``prepare_value()`` method (:ticket:`24841`).
tests/postgres_tests/test_ranges.py +9 −1 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ import unittest from django import forms from django.core import exceptions, serializers from django.db import connection from django.test import TestCase from django.test import TestCase, override_settings from django.utils import timezone from . import PostgresSQLTestCase Loading Loading @@ -474,6 +474,14 @@ class TestFormField(PostgresSQLTestCase): value = field.clean(['2013-04-09 11:45', '']) self.assertEqual(value, DateTimeTZRange(datetime.datetime(2013, 4, 9, 11, 45), None)) @override_settings(USE_TZ=True, TIME_ZONE='Africa/Johannesburg') def test_datetime_prepare_value(self): field = pg_forms.DateTimeRangeField() value = field.prepare_value( DateTimeTZRange(datetime.datetime(2015, 5, 22, 16, 6, 33, tzinfo=timezone.utc), None) ) self.assertEqual(value, [datetime.datetime(2015, 5, 22, 18, 6, 33), None]) def test_model_field_formfield_integer(self): model_field = pg_fields.IntegerRangeField() form_field = model_field.formfield() Loading