from django import forms from django.utils.translation import gettext_lazy as _ from pingcap_sso.validators.phone import ( PhoneNumberValidator, normalize_phone_number, ) class PhoneField(forms.CharField): default_validators = (PhoneNumberValidator(),) default_error_messages = { 'invalid': _('invalid phone number'), 'required': _('phone number is required'), } def to_python(self, value): value = super(PhoneField, self).to_python(value) if value in self.empty_values: return value return normalize_phone_number(value) class PhoneForm(forms.Form): phone = PhoneField(required=True)