From c8a8e1149bcfdfc46ad9b4af556ff49dcc9b2491 Mon Sep 17 00:00:00 2001 From: jain Date: Tue, 25 Jul 2023 15:27:29 +0530 Subject: [PATCH] jira-28 invite guardian --- .../junior_approval_mail.email | 2 +- junior/admin.py | 8 +++- junior/models.py | 3 -- junior/serializers.py | 40 ++++++++----------- junior/views.py | 4 +- 5 files changed, 26 insertions(+), 31 deletions(-) diff --git a/account/templates/templated_email/junior_approval_mail.email b/account/templates/templated_email/junior_approval_mail.email index fd3c19f..e9884d6 100644 --- a/account/templates/templated_email/junior_approval_mail.email +++ b/account/templates/templated_email/junior_approval_mail.email @@ -8,7 +8,7 @@

- Hi {{full_name}}, + Hello,

diff --git a/junior/admin.py b/junior/admin.py index 99f1cd0..acd8734 100644 --- a/junior/admin.py +++ b/junior/admin.py @@ -2,7 +2,7 @@ """Third party Django app""" from django.contrib import admin """Import Django app""" -from .models import Junior, JuniorPoints +from .models import Junior, JuniorPoints, JuniorGuardianRelationship # Register your models here. @admin.register(Junior) class JuniorAdmin(admin.ModelAdmin): @@ -21,3 +21,9 @@ class JuniorPointsAdmin(admin.ModelAdmin): def __str__(self): """Return email id""" return self.junior.auth.email + +@admin.register(JuniorGuardianRelationship) +class JuniorGuardianRelationshipAdmin(admin.ModelAdmin): + """Junior Admin""" + list_display = ['guardian', 'junior', 'relationship'] + diff --git a/junior/models.py b/junior/models.py index 2bba176..529e1e0 100644 --- a/junior/models.py +++ b/junior/models.py @@ -49,9 +49,6 @@ class Junior(models.Model): dob = models.DateField(max_length=15, null=True, blank=True, default=None) # Image of the junior""" image = models.URLField(null=True, blank=True, default=None) - # relationship""" - relationship = models.CharField(max_length=31, choices=RELATIONSHIP, null=True, blank=True, - default='1') # Sign up method""" signup_method = models.CharField(max_length=31, choices=SIGNUP_METHODS, default='1') # Codes""" diff --git a/junior/serializers.py b/junior/serializers.py index d2d6b6d..3bc2540 100644 --- a/junior/serializers.py +++ b/junior/serializers.py @@ -9,7 +9,7 @@ from rest_framework_simplejwt.tokens import RefreshToken """Import django app""" from account.utils import send_otp_email, generate_code -from junior.models import Junior, JuniorPoints +from junior.models import Junior, JuniorPoints, JuniorGuardianRelationship from guardian.tasks import generate_otp from base.messages import ERROR_CODE, SUCCESS_CODE from base.constants import PENDING, IN_PROGRESS, REJECTED, REQUESTED, COMPLETED, NUMBER, JUN, ZOD @@ -249,18 +249,11 @@ class JuniorProfileSerializer(serializers.ModelSerializer): class AddJuniorSerializer(serializers.ModelSerializer): """Add junior serializer""" - auth_token = serializers.SerializerMethodField('get_auth_token') - - def get_auth_token(self, obj): - """auth token""" - refresh = RefreshToken.for_user(obj) - access_token = str(refresh.access_token) - return access_token class Meta(object): """Meta info""" model = Junior - fields = ['id', 'gender','dob', 'relationship', 'auth_token', 'is_invited'] + fields = ['id', 'gender','dob', 'is_invited'] def create(self, validated_data): @@ -268,6 +261,7 @@ class AddJuniorSerializer(serializers.ModelSerializer): with transaction.atomic(): email = self.context['email'] guardian = self.context['user'] + relationship = self.context['relationship'] full_name = self.context['first_name'] + ' ' + self.context['last_name'] guardian_data = Guardian.objects.filter(user__username=guardian).last() user_data = User.objects.create(username=email, email=email, @@ -278,11 +272,13 @@ class AddJuniorSerializer(serializers.ModelSerializer): user_data.save() junior_data = Junior.objects.create(auth=user_data, gender=validated_data.get('gender'), dob=validated_data.get('dob'), is_invited=True, - relationship=validated_data.get('relationship'), + guardian_code=[guardian_data.guardian_code], junior_code=generate_code(JUN, user_data.id), referral_code=generate_code(ZOD, user_data.id), referral_code_used=guardian_data.referral_code, is_password_set=False, is_verified=True) + JuniorGuardianRelationship.objects.create(guardian=guardian_data, junior=junior_data, + relationship=relationship) """Generate otp""" otp_value = generate_otp() expiry_time = timezone.now() + timezone.timedelta(days=1) @@ -375,18 +371,11 @@ class JuniorPointsSerializer(serializers.ModelSerializer): class AddGuardianSerializer(serializers.ModelSerializer): """Add guardian serializer""" - auth_token = serializers.SerializerMethodField('get_auth_token') - - def get_auth_token(self, obj): - """auth token""" - refresh = RefreshToken.for_user(obj) - access_token = str(refresh.access_token) - return access_token class Meta(object): """Meta info""" model = Guardian - fields = ['id', 'auth_token'] + fields = ['id'] def create(self, validated_data): @@ -394,11 +383,12 @@ class AddGuardianSerializer(serializers.ModelSerializer): with transaction.atomic(): email = self.context['email'] junior = self.context['user'] + relationship = self.context['relationship'] full_name = self.context['first_name'] + ' ' + self.context['last_name'] junior_data = Junior.objects.filter(auth__username=junior).last() instance = User.objects.filter(username=email).last() if instance: - guardian_data = Guardian.objects.filter(user=user).update(is_invited=True, + guardian_data = Guardian.objects.filter(user=instance).update(is_invited=True, referral_code=generate_code(ZOD, instance.id), referral_code_used=junior_data.referral_code, @@ -412,22 +402,24 @@ class AddGuardianSerializer(serializers.ModelSerializer): password = User.objects.make_random_password() user.set_password(password) user.save() - Guardian.objects.create(user=user, is_invited=True, - referral_code=generate_code(ZOD, user.id), - referral_code_used=junior_data.referral_code, - is_password_set=False, is_verified=True) + guardian_data = Guardian.objects.create(user=user, is_invited=True, + referral_code=generate_code(ZOD, user.id), + referral_code_used=junior_data.referral_code, + is_password_set=False, is_verified=True) """Generate otp""" otp_value = generate_otp() expiry_time = timezone.now() + timezone.timedelta(days=1) UserEmailOtp.objects.create(email=email, otp=otp_value, user_type=str(NUMBER['two']), expired_at=expiry_time, is_verified=True) + JuniorGuardianRelationship.objects.create(guardian=guardian_data, junior=junior_data, + relationship=relationship) """Notification email""" junior_notification_email(email, full_name, email, password) junior_approval_mail(email, full_name) send_notification(INVITED_GUARDIAN, None, junior_data.auth.id, {}) send_notification(APPROVED_JUNIOR, None, email, {}) - return instance + return guardian_data class StartTaskSerializer(serializers.ModelSerializer): """User task Serializer""" diff --git a/junior/views.py b/junior/views.py index 00fd188..1021bc8 100644 --- a/junior/views.py +++ b/junior/views.py @@ -130,7 +130,7 @@ class AddJuniorAPIView(viewsets.ModelViewSet): """ junior list""" try: info = {'user': request.user, 'email': request.data['email'], 'first_name': request.data['first_name'], - 'last_name': request.data['last_name']} + 'last_name': request.data['last_name'], 'relationship': str(request.data['relationship'])} if User.objects.filter(username=request.data['email']): return custom_error_response(ERROR_CODE['2059'], response_status=status.HTTP_400_BAD_REQUEST) @@ -365,7 +365,7 @@ class InviteGuardianAPIView(viewsets.ModelViewSet): """ junior list""" try: info = {'user': request.user, 'email': request.data['email'], 'first_name': request.data['first_name'], - 'last_name': request.data['last_name']} + 'last_name': request.data['last_name'], 'relationship': str(request.data['relationship'])} # use AddJuniorSerializer serializer serializer = AddGuardianSerializer(data=request.data, context=info) if serializer.is_valid():