diff --git a/register/factory.py b/register/factory.py index a03597246ede5881c1556dcb5ae5b7d599bf9fed..973d6e793e7b4abeef18708936f0b0eeef3b44fd 100644 --- a/register/factory.py +++ b/register/factory.py @@ -23,3 +23,5 @@ class RegistrationFactory(factory.DjangoModelFactory): return '{}.{}@example.net'.format( printable_only(self.first_name.lower()), printable_only(self.last_name.lower())) + + phone_number = factory.Faker('phone_number', locale='fr') diff --git a/register/migrations/0002_registration_phone_number.py b/register/migrations/0002_registration_phone_number.py new file mode 100644 index 0000000000000000000000000000000000000000..14f20a952682c759e377f468d83a8627d1172ab4 --- /dev/null +++ b/register/migrations/0002_registration_phone_number.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1.1 on 2018-09-20 08:11 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('register', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='registration', + name='phone_number', + field=models.CharField(default='', help_text='Numéro de téléphone du lycéen (20 caractères max)', max_length=20, verbose_name='téléphone'), + ), + ] diff --git a/register/models.py b/register/models.py index c1b13bbe30367a8e68667062ff1e234fab4ecc76..d4966c41200ee3a37b9b324b75b5519205b6dbbb 100644 --- a/register/models.py +++ b/register/models.py @@ -20,6 +20,11 @@ class Registration(models.Model): 'Adresse email personnelle du lycéen. ' 'Note : doit être une adresse mail valide.' )) + phone_number = models.CharField( + max_length=20, verbose_name='téléphone', + help_text='Numéro de téléphone du lycéen (20 caractères max)', + blank=False, default='', + ) submitted = models.DateTimeField( auto_now_add=True, verbose_name='envoyé le', help_text="Date d'envoi du dossier d'inscription") diff --git a/register/serializers.py b/register/serializers.py index 5fd719050b10d77361c332b0d9ed792ca792d8f4..01cea366ada0994d6e2b0d6ef2bd5ea185d32e11 100644 --- a/register/serializers.py +++ b/register/serializers.py @@ -23,7 +23,7 @@ class RegistrationSerializer(serializers.ModelSerializer): class Meta: # noqa model = Registration fields = ('id', 'email', 'password', - 'first_name', 'last_name', + 'first_name', 'last_name', 'phone_number', 'submitted', 'validated',) extra_kwargs = { diff --git a/register/signals.py b/register/signals.py index a5bd23700cd74da5e7cbd633a9ffb2c715085b66..05723916545d82fbd1d52383913b6884eefc2e92 100644 --- a/register/signals.py +++ b/register/signals.py @@ -22,6 +22,7 @@ def create_user_and_student(sender, instance: Registration, password=password, first_name=instance.first_name, last_name=instance.last_name, + phone_number=instance.phone_number, ) Student.objects.create( diff --git a/tests/test_users/test_user.py b/tests/test_users/test_user.py index d51091b3f4010d02077cdb099d2e44fed710d563..79a56fcd242c8118cbb129f933a0fa51e17d6ef5 100644 --- a/tests/test_users/test_user.py +++ b/tests/test_users/test_user.py @@ -64,6 +64,10 @@ class UserModelTest(ModelTestCase): (User.PROFILE_STUDENT, 'Lycéen'), (User.PROFILE_TUTOR, 'Tuteur'), ) + }, + 'phone_number': { + 'blank': True, + 'null': True, } } model_tests = { diff --git a/users/admin.py b/users/admin.py index 3f51c65ad568e7d053c76f4d802bafec4a3b7fdc..5131546c64907e3e684fb5d537becff1efd161f9 100644 --- a/users/admin.py +++ b/users/admin.py @@ -40,7 +40,7 @@ class CustomUserAdmin(UserAdmin): fieldsets = ( (None, {'fields': ('email', 'password')}), (_('Personal info'), {'fields': ( - 'first_name', 'last_name', + 'first_name', 'last_name', 'phone_number', )}), (_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}), diff --git a/users/migrations/0003_user_phone_number.py b/users/migrations/0003_user_phone_number.py new file mode 100644 index 0000000000000000000000000000000000000000..e21f92f36549728df4075addd578036a9cdf6fb9 --- /dev/null +++ b/users/migrations/0003_user_phone_number.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1.1 on 2018-09-20 07:50 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0002_auto_20180911_2223'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='phone_number', + field=models.CharField(blank=True, max_length=20, null=True, verbose_name='téléphone'), + ), + ] diff --git a/users/models.py b/users/models.py index 5831b586d9625d97d83d98dbe253194213829956..264547d35d316da3c3bb6d4c5301f2a23ec5cd61 100644 --- a/users/models.py +++ b/users/models.py @@ -77,6 +77,9 @@ class User(AbstractUser): choices=PROFILE_CHOICES, verbose_name='type de profil') + phone_number = models.CharField('téléphone', + max_length=20, null=True, blank=True) + @property def student(self): return getattr(self, 'student', None) diff --git a/users/serializers.py b/users/serializers.py index 80643603a550e2cded1e7c675d45a21aff9f60b0..fa0d945045b66544a26a25ab4fe243c098ca2425 100644 --- a/users/serializers.py +++ b/users/serializers.py @@ -12,7 +12,7 @@ class UserSerializer(serializers.HyperlinkedModelSerializer): class Meta: # noqa model = User fields = ('id', 'email', 'profile_type', - 'first_name', 'last_name', 'url',) + 'first_name', 'last_name', 'phone_number', 'url',) extra_kwargs = { 'email': {'read_only': True}, 'url': {'view_name': 'api:user-detail'},