Commit 859eeaa0 authored by Tim Graham's avatar Tim Graham
Browse files

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

parent 669c29c8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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>',
+13 −4
Original line number Diff line number Diff line
@@ -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])


+2 −0
Original line number Diff line number Diff line
@@ -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
+11 −0
Original line number Diff line number Diff line
@@ -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>``,
+4 −0
Original line number Diff line number Diff line
@@ -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
Loading