Validate phone number against 10 digits

This commit is contained in:
Gabriel Augendre 2018-05-24 00:12:16 +02:00
parent 7330e5353f
commit 1dab5e1c8a
2 changed files with 34 additions and 1 deletions

View file

@ -0,0 +1,19 @@
# Generated by Django 2.0.5 on 2018-05-23 22:13
from django.db import migrations, models
import manuels.models
class Migration(migrations.Migration):
dependencies = [
('manuels', '0010_remove_book_collection'),
]
operations = [
migrations.AlterField(
model_name='teacher',
name='phone_number',
field=models.CharField(help_text="En cas d'urgence, 10 chiffres.", max_length=10, validators=[manuels.models.phone_validator], verbose_name='numéro de téléphone'),
),
]

View file

@ -18,6 +18,15 @@ class BaseModel(models.Model):
updated_at = models.DateTimeField('mis à jour le', auto_now=True) updated_at = models.DateTimeField('mis à jour le', auto_now=True)
def phone_validator(value):
regex = re.compile(r'^\d{10}$')
if not regex.match(value):
raise ValidationError(
"%(value)s n'est pas un numéro de téléphone valide. Format attendu : 10 chiffres.",
params={'value': value}
)
class Teacher(BaseModel): class Teacher(BaseModel):
class Meta: class Meta:
verbose_name = 'enseignant' verbose_name = 'enseignant'
@ -25,7 +34,12 @@ class Teacher(BaseModel):
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
first_name = models.CharField('prénom', max_length=100) first_name = models.CharField('prénom', max_length=100)
last_name = models.CharField('nom', max_length=100) last_name = models.CharField('nom', max_length=100)
phone_number = models.CharField('numéro de téléphone', help_text="En cas d'urgence", max_length=10) phone_number = models.CharField(
'numéro de téléphone',
help_text="En cas d'urgence, 10 chiffres.",
max_length=10,
validators=[phone_validator]
)
email = models.EmailField( email = models.EmailField(
'adresse email', 'adresse email',
help_text='Utilisée pour vous transmettre votre lien personnel', help_text='Utilisée pour vous transmettre votre lien personnel',