From acef8ab30a5b5528584c5ec380d41d72fac9b3b3 Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Thu, 15 Mar 2018 20:31:25 +0300 Subject: [PATCH] LIL-320. Add phone to user model --- api/v1/serializers/user.py | 6 +++++- apps/user/forms.py | 3 +++ apps/user/migrations/0018_user_phone.py | 19 +++++++++++++++++++ apps/user/models.py | 3 +++ apps/user/tasks.py | 3 ++- .../user/templates/user/profile-settings.html | 9 +++++++++ requirements.txt | 1 + 7 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 apps/user/migrations/0018_user_phone.py diff --git a/api/v1/serializers/user.py b/api/v1/serializers/user.py index d548da19..fe316cf5 100644 --- a/api/v1/serializers/user.py +++ b/api/v1/serializers/user.py @@ -1,6 +1,8 @@ -from django.contrib.auth import get_user_model +from phonenumber_field.serializerfields import PhoneNumberField from rest_framework import serializers +from django.contrib.auth import get_user_model + from . import Base64ImageField from apps.user.models import AuthorRequest @@ -8,6 +10,7 @@ User = get_user_model() class UserSerializer(serializers.ModelSerializer): + phone = PhoneNumberField() class Meta: model = User @@ -15,6 +18,7 @@ class UserSerializer(serializers.ModelSerializer): 'id', 'username', 'email', + 'phone', 'first_name', 'last_name', 'is_staff', diff --git a/apps/user/forms.py b/apps/user/forms.py index f2933c70..2445d522 100644 --- a/apps/user/forms.py +++ b/apps/user/forms.py @@ -1,5 +1,6 @@ from django import forms from django.contrib.auth import get_user_model +from phonenumber_field.formfields import PhoneNumberField from .fields import CreditCardField @@ -10,6 +11,7 @@ class UserEditForm(forms.ModelForm): # first_name = forms.CharField() # last_name = forms.CharField() # email = forms.CharField() + phone = PhoneNumberField() # city = forms.CharField() # country = forms.CharField() birthday = forms.DateField(input_formats=['%d.%m.%Y'], required=False) @@ -33,6 +35,7 @@ class UserEditForm(forms.ModelForm): 'first_name', 'last_name', 'email', + 'phone', 'city', 'country', 'birthday', diff --git a/apps/user/migrations/0018_user_phone.py b/apps/user/migrations/0018_user_phone.py new file mode 100644 index 00000000..d377bcf5 --- /dev/null +++ b/apps/user/migrations/0018_user_phone.py @@ -0,0 +1,19 @@ +# Generated by Django 2.0.3 on 2018-03-15 17:19 + +from django.db import migrations +import phonenumber_field.modelfields + + +class Migration(migrations.Migration): + + dependencies = [ + ('user', '0017_subscriptioncategory_auto_add'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='phone', + field=phonenumber_field.modelfields.PhoneNumberField(blank=True, max_length=128, null=True, unique=True), + ), + ] diff --git a/apps/user/models.py b/apps/user/models.py index f4c56536..57ec8cd2 100644 --- a/apps/user/models.py +++ b/apps/user/models.py @@ -1,5 +1,6 @@ from json import dumps from rest_framework.authtoken.models import Token +from phonenumber_field.modelfields import PhoneNumberField from django.db import models from django.db.models.signals import post_save @@ -33,6 +34,7 @@ class User(AbstractUser): (FEMALE, 'Женщина'), ) email = models.EmailField(_('email address'), unique=True) + phone = PhoneNumberField(null=True, blank=True, unique=True) role = models.PositiveSmallIntegerField( 'Роль', default=0, choices=ROLE_CHOICES) gender = models.CharField( @@ -96,6 +98,7 @@ def send_user_info_to_mixpanel(sender, instance=None, created=False, **kwargs): user_to_mixpanel.delay( instance.id, instance.email, + str(instance.phone), instance.first_name, instance.last_name, instance.date_joined, diff --git a/apps/user/tasks.py b/apps/user/tasks.py index 702c804e..a95988be 100644 --- a/apps/user/tasks.py +++ b/apps/user/tasks.py @@ -6,12 +6,13 @@ from project.celery import app @app.task -def user_to_mixpanel(user_id, email, first_name, last_name, date_joined, role, subscriptions): +def user_to_mixpanel(user_id, email, phone, first_name, last_name, date_joined, role, subscriptions): mix = Mixpanel(settings.MIX_TOKEN) mix.people_set( user_id, { '$email': email, + '$phone': phone, '$first_name': first_name, '$last_name': last_name, '$created': date_joined, diff --git a/apps/user/templates/user/profile-settings.html b/apps/user/templates/user/profile-settings.html index 33baee8e..8eddef8c 100644 --- a/apps/user/templates/user/profile-settings.html +++ b/apps/user/templates/user/profile-settings.html @@ -80,6 +80,15 @@
Укажите корректно свои данные
{% endif %} +
+
Телефон
+
+ +
+ {% if form.phone.errors %} +
Укажите корректно свои данные
+ {% endif %} +
ГОРОД
diff --git a/requirements.txt b/requirements.txt index 4faab0da..2ca79a88 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,6 +9,7 @@ django-constance[database]==2.1.0 django-filter==2.0.0.dev1 django-mptt==0.9.0 django-silk==2.0.0 +django-phonenumber-field==2.0.0 django-polymorphic-tree==1.5 djangorestframework==3.7.7 drf-yasg[validation]==1.5.0