From f0927315c3a0d80d5a7a78eeaffb6993b44ace6a Mon Sep 17 00:00:00 2001 From: florimondmanca <florimond.manca@gmail.com> Date: Thu, 20 Sep 2018 10:15:10 +0200 Subject: [PATCH] add phone number to user and student registration api --- register/factory.py | 2 ++ .../0002_registration_phone_number.py | 18 ++++++++++++++++++ register/models.py | 5 +++++ register/serializers.py | 2 +- register/signals.py | 1 + tests/test_users/test_user.py | 4 ++++ users/admin.py | 2 +- users/migrations/0003_user_phone_number.py | 18 ++++++++++++++++++ users/models.py | 3 +++ users/serializers.py | 2 +- 10 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 register/migrations/0002_registration_phone_number.py create mode 100644 users/migrations/0003_user_phone_number.py diff --git a/register/factory.py b/register/factory.py index a035972..973d6e7 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 0000000..14f20a9 --- /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 c1b13bb..d4966c4 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 5fd7190..01cea36 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 a5bd237..0572391 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 d51091b..79a56fc 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 3f51c65..5131546 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 0000000..e21f92f --- /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 5831b58..264547d 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 8064360..fa0d945 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'}, -- GitLab