provice and city and address in accounts

This commit is contained in:
Sayyid Hamid Mahdavi 2020-11-15 13:23:22 +03:30
parent 42b4bbe740
commit ba41e79b98
5 changed files with 1304 additions and 19 deletions

1250
apps/users/cities.py Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,33 @@
# Generated by Django 3.1.3 on 2020-11-15 09:48
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0002_remove_user_code'),
]
operations = [
migrations.AddField(
model_name='user',
name='address',
field=models.TextField(blank=True, null=True, verbose_name='address'),
),
migrations.AddField(
model_name='user',
name='city',
field=models.IntegerField(blank=True, null=True, verbose_name='City'),
),
migrations.AddField(
model_name='user',
name='postal_code',
field=models.CharField(blank=True, max_length=20, null=True, verbose_name='postal_code'),
),
migrations.AddField(
model_name='user',
name='province',
field=models.IntegerField(blank=True, null=True, verbose_name='Province'),
),
]

View file

@ -65,6 +65,18 @@ class User(AbstractUser):
first_name = models.CharField(_('first name'), max_length=30, blank=True)
last_name = models.CharField(_('last name'), max_length=150, blank=True)
email = models.EmailField(_('email address'), blank=True)
# country = models.CharField(_('country'), max_length=50, blank=True, null=True)
# province = models.CharField(_('province'), max_length=50, blank=True, null=True)
# city = models.CharField(_('city'), max_length=50, blank=True, null=True)
# postal_code = models.CharField(_('postal_code'), max_length=20, blank=True, null=True)
# address = models.TextField(_('address'), null=True, blank=True)
province = models.IntegerField(verbose_name=_("Province"), blank=True, null=True)
city = models.IntegerField(verbose_name=_("City"), blank=True, null=True)
postal_code = models.CharField(_('postal_code'), max_length=20, blank=True, null=True)
address = models.TextField(_('address'), null=True, blank=True)
is_staff = models.BooleanField(
_('staff status'),
default=False,
@ -121,17 +133,6 @@ class User(AbstractUser):
self.otp_expire = timezone.now() + timedelta(minutes=5)
self.otp_try = 0
# def set_code(self):
# for code in random.sample(range(10000, 100000), 90000):
# try:
# code = str(code)
# self.code = code
# return self.save()
# except:
# pass
#
# raise APIException('system error')
def otp_is_valid(self):
return bool(self.otp and timezone.now() <= self.otp_expire)

View file

@ -7,13 +7,8 @@ from django.utils import timezone
class PublicUserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('avatar', 'name', 'username', 'email', "first_name", "last_name", "uuid")
read_only_fields = ['avatar', 'name', 'username', 'email', 'first_name', 'last_name', "uuid"]
# def to_internal_value(self, data):
# code = data.get('code')
# if code:
# return User.objects.get(code=code)
fields = ('avatar', 'name', 'username', "first_name", "last_name", "uuid")
read_only_fields = ['avatar', 'name', 'username', 'first_name', 'last_name', "uuid"]
class AccountSerializer(serializers.ModelSerializer):
@ -31,6 +26,11 @@ class AccountSerializer(serializers.ModelSerializer):
'avatar',
'iban',
'iban_verified',
# 'country',
'province',
'city',
'postal_code',
'address',
)
read_only_fields = ['uuid', 'balance', 'email', 'phone_number', 'iban_verified']
@ -51,6 +51,7 @@ class RequestOTPSerializer(serializers.ModelSerializer):
write_only_fields = []
def save(self, **kwargs):
# TODO: move it to query set
validated_data = self.validated_data
user = User.objects.filter(phone_number=validated_data['phone_number']).first()
if not user:

View file

@ -4,7 +4,7 @@ from django.contrib.auth.views import LoginView
from django.shortcuts import render
from django.utils import timezone
from oauth2_provider.contrib.rest_framework import IsAuthenticatedOrTokenHasScope
from rest_framework import generics, status
from rest_framework import generics, status, permissions
from rest_framework.response import Response
from rest_framework.views import APIView