diff --git a/user/models.py b/user/models.py index b0cbf0d5aa82a9aed8d167bde56cd80a6b54261a..f28354ed1989ad3b5e1e7062f69bfc8064fac98d 100644 --- a/user/models.py +++ b/user/models.py @@ -14,6 +14,17 @@ class ExtendedUser(AbstractUser): raise ValidationError('Usia pengguna minimal 12 tahun.') + def validate_and_sanitize_phone(value): + phone_regex = RegexValidator( + regex=r'^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$', + message='Nomor telepon tidak valid.' + ) + phone_regex(value) + + # If Success, sanitize input by removing unnecessary characters (+ and -) + value = value.replace('(', '').replace(')', '').replace('-', '').replace(' ', '') + + return value enum_kategori = { 'Elektronik': 'Elektronik', @@ -54,10 +65,7 @@ class ExtendedUser(AbstractUser): nomor_hp = models.CharField( max_length=15, validators=[ - RegexValidator( - regex=r'^62\d{6,13}$', - message='Nomor HP harus dalam format (kode negara - nomor telepon) dengan panjang minimal 8 dan maksimal 15. Contoh: 62123456, bukan +62123456 dan 62-12345.' - ), + validate_and_sanitize_phone ] ) email = models.CharField(