province and city name

This commit is contained in:
Sayyid Hamid Mahdavi 2020-11-15 13:33:26 +03:30
parent ba41e79b98
commit 2d444fd270
3 changed files with 15 additions and 2 deletions

View file

@ -11,6 +11,8 @@ from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from rest_framework.exceptions import APIException
import uuid
from .provinces_and_cities import state
from .tasks import send_notification
from apps.users.constans import MAX_OTP_TRY, DEVELOPMENT_PHONE_NUMBERS
@ -123,6 +125,14 @@ class User(AbstractUser):
objects = UserManager()
@property
def city_name(self):
return state.get_city_by_id(self.city)
@property
def province_name(self):
return state.get_province_by_id(self.province)
def set_otp(self):
if settings.DEBUG or self.phone_number in DEVELOPMENT_PHONE_NUMBERS:
self.otp = '12345'

View file

@ -1316,6 +1316,7 @@ class State:
def province_list(self):
return self.provinces
# TODO: performance issue
def get_city_by_id(self, city_id):
for province_id, province in self.provinces.items():
for city in province.get('cities'):
@ -1324,7 +1325,7 @@ class State:
return None
def get_province_by_id(self, province_id):
return self.provinces.get(province_id).get('name')
return self.provinces.get(province_id, {}).get('name')
def validate_city(self, province_id, city_id):
cities_id = [item.get('id') for item in self.provinces.get(province_id).get('cities')]

View file

@ -28,11 +28,13 @@ class AccountSerializer(serializers.ModelSerializer):
'iban_verified',
# 'country',
'province',
'province_name',
'city',
'city_name',
'postal_code',
'address',
)
read_only_fields = ['uuid', 'balance', 'email', 'phone_number', 'iban_verified']
read_only_fields = ['uuid', 'balance', 'email', 'phone_number', 'iban_verified', 'province_name', 'city_name',]
class RequestOTPSerializer(serializers.ModelSerializer):