Kaydet (Commit) 859eeaa0 authored tarafından Tim Graham's avatar Tim Graham

Fixed #26533 -- Renamed Widget._format_value() to format_value().

üst 669c29c8
......@@ -376,7 +376,7 @@ class AdminURLFieldWidget(forms.URLInput):
def render(self, name, value, attrs=None):
html = super(AdminURLFieldWidget, self).render(name, value, attrs)
if value:
value = force_text(self._format_value(value))
value = force_text(self.format_value(value))
final_attrs = {'href': smart_urlquote(value)}
html = format_html(
'<p class="url">{} <a{}>{}</a><br />{} {}</p>',
......
......@@ -15,6 +15,9 @@ from django.templatetags.static import static
from django.utils import datetime_safe, formats, six
from django.utils.datastructures import MultiValueDict
from django.utils.dates import MONTHS
from django.utils.deprecation import (
RemovedInDjango20Warning, RenameMethodsBase,
)
from django.utils.encoding import (
force_str, force_text, python_2_unicode_compatible,
)
......@@ -174,7 +177,13 @@ class SubWidget(object):
return self.parent_widget.render(*args)
class Widget(six.with_metaclass(MediaDefiningClass)):
class RenameWidgetMethods(MediaDefiningClass, RenameMethodsBase):
renamed_methods = (
('_format_value', 'format_value', RemovedInDjango20Warning),
)
class Widget(six.with_metaclass(RenameWidgetMethods)):
needs_multipart_form = False # Determines does this widget need multipart form
is_localized = False
is_required = False
......@@ -248,7 +257,7 @@ class Input(Widget):
"""
input_type = None # Subclasses must define this.
def _format_value(self, value):
def format_value(self, value):
if self.is_localized:
return formats.localize_input(value)
return value
......@@ -259,7 +268,7 @@ class Input(Widget):
final_attrs = self.build_attrs(attrs, type=self.input_type, name=name)
if value != '':
# Only add the 'value' attribute if a value is non-empty.
final_attrs['value'] = force_text(self._format_value(value))
final_attrs['value'] = force_text(self.format_value(value))
return format_html('<input{} />', flatatt(final_attrs))
......@@ -443,7 +452,7 @@ class DateTimeBaseInput(TextInput):
super(DateTimeBaseInput, self).__init__(attrs)
self.format = format if format else None
def _format_value(self, value):
def format_value(self, value):
return formats.localize_input(value, self.format or formats.get_format(self.format_key)[0])
......
......@@ -163,6 +163,8 @@ details on these changes.
* In multi-table inheritance, implicit promotion of a ``OneToOneField`` to a
``parent_link`` will be removed.
* Support for ``Widget._format_value()`` will be removed.
.. _deprecation-removed-in-1.10:
1.10
......
......@@ -228,6 +228,17 @@ foundation for custom widgets.
In older versions, this attribute was only defined on the date
and time widgets (as ``False``).
.. method:: format_value(value)
Cleans and returns a value for use in the widget template. ``value``
isn't guaranteed to be valid input, therefore subclass implementations
should program defensively.
.. versionchanged:: 1.10
In older versions, this method is a private API named
``_format_value()``. The old name will work until Django 2.0.
.. method:: id_for_label(self, id_)
Returns the HTML ID attribute of this widget for use by a ``<label>``,
......
......@@ -983,6 +983,10 @@ Miscellaneous
* In multi-table inheritance, implicit promotion of a ``OneToOneField`` to a
``parent_link`` is deprecated. Add ``parent_link=True`` to such fields.
* The private API ``Widget._format_value()`` is made public and renamed to
:meth:`~django.forms.Widget.format_value`. The old name will work
through a deprecation period.
.. _removed-features-1.10:
Features removed in 1.10
......
......@@ -69,7 +69,7 @@ class DateFieldTest(SimpleTestCase):
'mydate_year': '2008',
'mydate_month': '4',
'mydate_day': '1',
'initial-mydate': HiddenInput()._format_value(date(2008, 4, 1)),
'initial-mydate': HiddenInput().format_value(date(2008, 4, 1)),
}, initial={'mydate': date(2008, 4, 1)})
self.assertFalse(b.has_changed())
......@@ -77,7 +77,7 @@ class DateFieldTest(SimpleTestCase):
'mydate_year': '2008',
'mydate_month': '4',
'mydate_day': '22',
'initial-mydate': HiddenInput()._format_value(date(2008, 4, 1)),
'initial-mydate': HiddenInput().format_value(date(2008, 4, 1)),
}, initial={'mydate': date(2008, 4, 1)})
self.assertTrue(b.has_changed())
......@@ -85,7 +85,7 @@ class DateFieldTest(SimpleTestCase):
'mydate_year': '2008',
'mydate_month': '4',
'mydate_day': '22',
'initial-mydate': HiddenInput()._format_value(date(2008, 4, 1)),
'initial-mydate': HiddenInput().format_value(date(2008, 4, 1)),
}, initial={'mydate': date(2008, 4, 22)})
self.assertTrue(b.has_changed())
......@@ -93,7 +93,7 @@ class DateFieldTest(SimpleTestCase):
'mydate_year': '2008',
'mydate_month': '4',
'mydate_day': '22',
'initial-mydate': HiddenInput()._format_value(date(2008, 4, 22)),
'initial-mydate': HiddenInput().format_value(date(2008, 4, 22)),
}, initial={'mydate': date(2008, 4, 1)})
self.assertFalse(b.has_changed())
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment