Initial Commit

This commit is contained in:
jain
2023-06-23 19:13:49 +05:30
parent 501deaac0b
commit 8bc3a307c0
49 changed files with 1752 additions and 0 deletions

View File

@ -0,0 +1,91 @@
from rest_framework import serializers
from django.contrib.auth.models import User
from .models import Guardian
from django.db import transaction
import random
from account.models import UserProfile
from junior.models import Junior
from base.constants import GENDERS, GUARDIAN, JUNIOR, SUPERUSER
from rest_framework_simplejwt.tokens import RefreshToken
from base.messages import ERROR_CODE, SUCCESS_CODE
class UserSerializer(serializers.ModelSerializer):
auth_token = serializers.SerializerMethodField('get_auth_token')
class Meta(object):
model = User
fields = ['email', 'password', 'auth_token']
def get_auth_token(self, obj):
refresh = RefreshToken.for_user(obj)
access_token = str(refresh.access_token)
return access_token
def create(self, validated_data):
email = validated_data.get('email')
user_type = self.context
password = validated_data.get('password')
try:
user = User.objects.create_user(username=email, email=email, password=password)
UserProfile.objects.create(user=user, user_type=user_type)
return user
except:
raise serializers.ValidationError({"details":ERROR_CODE['2021']})
def save(self, **kwargs):
with transaction.atomic():
instance = super().save(**kwargs)
return instance
class CreateGuardianSerializer(serializers.ModelSerializer):
first_name = serializers.SerializerMethodField('get_first_name')
last_name = serializers.SerializerMethodField('get_last_name')
email = serializers.SerializerMethodField('get_email')
phone = serializers.CharField(max_length=20, required=False)
family_name = serializers.CharField(max_length=100, required=False)
country_code = serializers.IntegerField(required=False)
dob = serializers.DateField(required=False)
referral_code = serializers.CharField(max_length=100, required=False)
class Meta(object):
model = Guardian
fields = ['first_name', 'last_name', 'email', 'phone', 'family_name', 'gender', 'country_code', 'dob', 'referral_code', 'passcode',
'is_complete_profile']
def get_first_name(self,obj):
return obj.user.first_name
def get_last_name(self,obj):
return obj.user.last_name
def get_email(self,obj):
return obj.user.email
def create(self, validated_data):
user = User.objects.filter(username=self.context['user']).last()
if user:
user.first_name = self.context.get('first_name', user.first_name)
user.last_name = self.context.get('last_name', user.last_name)
user.save()
guardian, created = Guardian.objects.get_or_create(user=self.context['user'])
if created:
guardian.referral_code = ''.join([str(random.randrange(9)) for _ in range(4)])
guardian.guardian_code = ''.join([str(random.randrange(9)) for _ in range(4)])
if guardian:
guardian.phone = validated_data.get('phone', guardian.phone)
guardian.gender = validated_data.get('gender',guardian.gender)
guardian.family_name = validated_data.get('family_name', guardian.family_name)
guardian.dob = validated_data.get('dob',guardian.dob)
guardian.passcode = validated_data.get('passcode', guardian.passcode)
complete_profile_field = all([guardian.phone, guardian.gender, guardian.family_name,
guardian.dob, guardian.country_code, user.first_name, user.last_name])
guardian.is_complete_profile = False
if complete_profile_field:
guardian.is_complete_profile = True
guardian.country_code = validated_data.get('country_code', guardian.country_code)
guardian.save()
return guardian
def save(self, **kwargs):
with transaction.atomic():
instance = super().save(**kwargs)
return instance