Source code for localflavor.my.forms

from django.forms import ValidationError
from django.forms.fields import CharField
from django.utils.translation import gettext_lazy as _
from stdnum.my import nric


[docs]class MyKadFormField(CharField): """ A form field that validates input as a Malaysia MyKad number. Conforms to the YYMMDD-PB-###G or YYMMDDPB###G format More info: https://en.wikipedia.org/wiki/Malaysian_identity_card .. versionadded:: 3.0 """ default_error_messages = { 'invalid': _('Invalid MyKad number.') }
[docs] def clean(self, value): value = super().clean(value) if value in self.empty_values: return value if nric.is_valid(value): return value raise ValidationError(self.error_messages['invalid'], code='invalid')
[docs] def to_python(self, value): value = super().to_python(value) if value in self.empty_values: return value return nric.compact(value)
def prepare_value(self, value): value = super().prepare_value(value) if value is None: return value return nric.format(value)