Skip to content

Commit

Permalink
Remove PhoneNumberInternationalFallbackWidget
Browse files Browse the repository at this point in the history
Following the deprecation plan.
  • Loading branch information
francoisfreitag committed Mar 14, 2024
1 parent 4484533 commit 318b988
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 65 deletions.
22 changes: 0 additions & 22 deletions phonenumber_field/widgets.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import warnings

from django.conf import settings
from django.core import validators
from django.core.exceptions import ImproperlyConfigured
Expand Down Expand Up @@ -163,23 +161,3 @@ def format_value(self, value):
if self.region in region_codes:
return value.as_national
return super().format_value(value)


class PhoneNumberInternationalFallbackWidget(RegionalPhoneNumberWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
warnings.warn(
f"{self.__class__.__name__} will be removed in the next major version. "
"Use phonenumber_field.widgets.RegionalPhoneNumberWidget instead.",
DeprecationWarning,
stacklevel=2,
)

def format_value(self, value):
if isinstance(value, PhoneNumber):
if value.is_valid() and value.country_code:
region_codes = region_codes_for_country_code(value.country_code)
if self.region in region_codes:
return value.as_national
return value.as_international
return super().format_value(value)
44 changes: 1 addition & 43 deletions tests/test_widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,7 @@

from phonenumber_field import formfields, widgets
from phonenumber_field.phonenumber import PhoneNumber
from phonenumber_field.widgets import (
PhoneNumberInternationalFallbackWidget,
PhoneNumberPrefixWidget,
RegionalPhoneNumberWidget,
)
from phonenumber_field.widgets import PhoneNumberPrefixWidget, RegionalPhoneNumberWidget


class PhonePrefixSelectTest(SimpleTestCase):
Expand Down Expand Up @@ -313,41 +309,3 @@ def test_no_region(self):
widget.render("number", number),
f'<input name="number" type="tel" value="{expected}" />',
)


class PhoneNumberInternationalFallbackWidgetTest(SimpleTestCase):
def test_raises_deprecation_warning(self):
msg = (
"PhoneNumberInternationalFallbackWidget will be removed in the next major "
"version. Use phonenumber_field.widgets.RegionalPhoneNumberWidget "
"instead."
)
with self.assertWarnsMessage(DeprecationWarning, msg):

class _(forms.Form):
number = formfields.PhoneNumberField(
widget=PhoneNumberInternationalFallbackWidget
)

def test_fallback_widget_switches_between_national_and_international(self):
region = "GB"
number_string = "01606 751 78"
number = PhoneNumber.from_string(number_string, region=region)
gb_widget = PhoneNumberInternationalFallbackWidget()
gb_widget.region = "GB"
de_widget = PhoneNumberInternationalFallbackWidget()
de_widget.region = "DE"
self.assertHTMLEqual(
gb_widget.render("number", number),
'<input name="number" type="tel" value="01606 75178" />',
)
self.assertHTMLEqual(
de_widget.render("number", number),
'<input name="number" type="tel" value="+44 1606 75178" />',
)

# If there's been a validation error, the value should be included verbatim
self.assertHTMLEqual(
gb_widget.render("number", "error"),
'<input name="number" type="tel" value="error" />',
)

0 comments on commit 318b988

Please sign in to comment.