mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-15 01:55:21 +00:00
163 lines
5.9 KiB
Python
163 lines
5.9 KiB
Python
from rest_framework import serializers
|
|
from django.contrib.auth.models import User
|
|
from guardian.models import Guardian
|
|
from junior.models import Junior
|
|
from account.models import UserProfile, UserEmailOtp, UserPhoneOtp
|
|
from base.constants import GUARDIAN, JUNIOR, SUPERUSER
|
|
from django.db import transaction
|
|
from base.messages import ERROR_CODE_REQUIRED, ERROR_CODE, SUCCESS_CODE, STATUS_CODE_ERROR
|
|
from django.core.exceptions import ObjectDoesNotExist
|
|
from django.contrib.auth import authenticate
|
|
from rest_framework import viewsets, status
|
|
from rest_framework.decorators import action
|
|
from django.contrib.auth import authenticate, login
|
|
from rest_framework_simplejwt.tokens import RefreshToken
|
|
|
|
|
|
class ResetPasswordSerializer(serializers.Serializer):
|
|
"""Reset Password after verification"""
|
|
verification_code = serializers.CharField(max_length=10)
|
|
password = serializers.CharField(required=True)
|
|
class Meta(object):
|
|
"""Meta info"""
|
|
model = User
|
|
|
|
def create(self, validated_data):
|
|
verification_code = validated_data.pop('verification_code')
|
|
password = validated_data.pop('password')
|
|
print("verification_code===>",verification_code)
|
|
print("password===>", password)
|
|
user_opt_details = UserEmailOtp.objects.filter(otp=verification_code, is_verified=True).last()
|
|
print("user_opt_details===>",user_opt_details)
|
|
if user_opt_details:
|
|
print("qqqqqqqqqq")
|
|
user_details = User.objects.filter(email=user_opt_details.email).last()
|
|
if user_details:
|
|
print("333333333==>",user_details.password)
|
|
user_details.set_password(password)
|
|
user_details.save()
|
|
return {'password':password}
|
|
return user_opt_details
|
|
return ''
|
|
|
|
class ChangePasswordSerializer(serializers.Serializer):
|
|
"""Update Password after verification"""
|
|
current_password = serializers.CharField(max_length=100)
|
|
new_password = serializers.CharField(required=True)
|
|
class Meta(object):
|
|
"""Meta info"""
|
|
model = User
|
|
|
|
def validate_current_password(self, value):
|
|
user = self.context
|
|
if self.context.password not in ('', None):
|
|
if user.check_password(value):
|
|
return value
|
|
raise serializers.ValidationError({"error":"Invalid Current password"})
|
|
def create(self, validated_data):
|
|
new_password = validated_data.pop('new_password')
|
|
user_details = User.objects.filter(email=self.context).last()
|
|
print("user_details==>", user_details)
|
|
if user_details:
|
|
print("333333333==>",user_details.password)
|
|
user_details.set_password(new_password)
|
|
user_details.save()
|
|
return {'password':new_password}
|
|
return ''
|
|
|
|
|
|
|
|
class ForgotPasswordSerializer(serializers.Serializer):
|
|
"""Forget password serializer"""
|
|
email = serializers.EmailField()
|
|
|
|
class SuperUserSerializer(serializers.ModelSerializer):
|
|
user_type = serializers.SerializerMethodField('get_user_type')
|
|
|
|
def get_user_type(self, obj):
|
|
"""user type"""
|
|
return SUPERUSER
|
|
|
|
class Meta(object):
|
|
"""Meta info"""
|
|
model = User
|
|
fields = ['id', 'username', 'email', 'first_name', 'last_name', 'is_active', 'user_type']
|
|
|
|
|
|
class GuardianSerializer(serializers.ModelSerializer):
|
|
"""guardian serializer"""
|
|
user_type = serializers.SerializerMethodField('get_user_type')
|
|
email = serializers.SerializerMethodField('get_auth')
|
|
first_name = serializers.SerializerMethodField('get_first_name')
|
|
last_name = serializers.SerializerMethodField('get_last_name')
|
|
auth_token = serializers.SerializerMethodField('get_auth_token')
|
|
|
|
def get_auth_token(self, obj):
|
|
refresh = RefreshToken.for_user(obj.user)
|
|
access_token = str(refresh.access_token)
|
|
return access_token
|
|
|
|
def get_user_type(self, obj):
|
|
"""user type"""
|
|
return GUARDIAN
|
|
|
|
def get_auth(self, obj):
|
|
"""user email address"""
|
|
return obj.user.username
|
|
|
|
def get_first_name(self, obj):
|
|
"""user first name"""
|
|
return obj.user.first_name
|
|
|
|
def get_last_name(self, obj):
|
|
"""user last name"""
|
|
return obj.user.last_name
|
|
|
|
class Meta(object):
|
|
"""Meta info"""
|
|
model = Guardian
|
|
fields = ['auth_token', 'email', 'first_name', 'last_name', 'country_code', 'phone', 'family_name', 'gender', 'dob',
|
|
'referral_code', 'is_active', 'is_complete_profile', 'passcode',
|
|
'created_at', 'updated_at', 'user_type']
|
|
|
|
|
|
class JuniorSerializer(serializers.ModelSerializer):
|
|
"""junior serializer"""
|
|
user_type = serializers.SerializerMethodField('get_user_type')
|
|
email = serializers.SerializerMethodField('get_auth')
|
|
first_name = serializers.SerializerMethodField('get_first_name')
|
|
last_name = serializers.SerializerMethodField('get_last_name')
|
|
auth_token = serializers.SerializerMethodField('get_auth_token')
|
|
|
|
def get_auth_token(self, obj):
|
|
refresh = RefreshToken.for_user(obj.auth)
|
|
access_token = str(refresh.access_token)
|
|
return access_token
|
|
|
|
def get_user_type(self, obj):
|
|
return JUNIOR
|
|
|
|
def get_auth(self, obj):
|
|
return obj.auth.username
|
|
|
|
def get_first_name(self, obj):
|
|
return obj.auth.first_name
|
|
|
|
def get_last_name(self, obj):
|
|
return obj.auth.last_name
|
|
|
|
class Meta(object):
|
|
"""Meta info"""
|
|
model = Junior
|
|
fields = ['auth_token', 'email', 'first_name', 'last_name', 'country_code', 'phone', 'gender', 'dob',
|
|
'guardian_code', 'referral_code','is_active', 'is_complete_profile', 'created_at',
|
|
'updated_at', 'user_type']
|
|
|
|
class EmailVerificationSerializer(serializers.ModelSerializer):
|
|
"""Email verification serializer"""
|
|
class Meta(object):
|
|
"""Meta info"""
|
|
model = UserEmailOtp
|
|
fields = '__all__'
|
|
|