mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-11-27 00:54:54 +00:00
minor changes
This commit is contained in:
@ -5,7 +5,7 @@ from rest_framework.response import Response
|
|||||||
from rest_framework.renderers import JSONRenderer
|
from rest_framework.renderers import JSONRenderer
|
||||||
"""App django"""
|
"""App django"""
|
||||||
from account.utils import custom_error_response
|
from account.utils import custom_error_response
|
||||||
from account.models import UserDeviceDetails
|
from account.models import UserDeviceDetails, ForceUpdate
|
||||||
from base.messages import ERROR_CODE, SUCCESS_CODE
|
from base.messages import ERROR_CODE, SUCCESS_CODE
|
||||||
from base.constants import NUMBER
|
from base.constants import NUMBER
|
||||||
from junior.models import Junior
|
from junior.models import Junior
|
||||||
@ -39,6 +39,8 @@ class CustomMiddleware(object):
|
|||||||
# Code to be executed after the view is called
|
# Code to be executed after the view is called
|
||||||
device_id = request.META.get('HTTP_DEVICE_ID')
|
device_id = request.META.get('HTTP_DEVICE_ID')
|
||||||
user_type = request.META.get('HTTP_USER_TYPE')
|
user_type = request.META.get('HTTP_USER_TYPE')
|
||||||
|
version = request.META.get('HTTP_VERSION')
|
||||||
|
device_type = str(request.META.get('HTTP_TYPE'))
|
||||||
api_endpoint = request.path
|
api_endpoint = request.path
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
# device details
|
# device details
|
||||||
@ -56,4 +58,6 @@ class CustomMiddleware(object):
|
|||||||
if device_id and not device_details and api_endpoint != '/api/v1/user/login/':
|
if device_id and not device_details and api_endpoint != '/api/v1/user/login/':
|
||||||
custom_error = custom_error_response(ERROR_CODE['2037'], response_status=status.HTTP_404_NOT_FOUND)
|
custom_error = custom_error_response(ERROR_CODE['2037'], response_status=status.HTTP_404_NOT_FOUND)
|
||||||
response = custom_response(custom_error)
|
response = custom_response(custom_error)
|
||||||
|
force_update = ForceUpdate.objects.filter(version=version, device_type=device_type).last()
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|||||||
28
account/migrations/0010_forceupdate.py
Normal file
28
account/migrations/0010_forceupdate.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# Generated by Django 4.2.2 on 2023-08-22 07:39
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('account', '0009_alter_userdevicedetails_device_id'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='ForceUpdate',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('version', models.CharField(blank=True, max_length=50, null=True)),
|
||||||
|
('device_type', models.CharField(blank=True, choices=[('1', 'android'), ('2', 'ios')], default=None, max_length=15, null=True)),
|
||||||
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||||
|
('updated_at', models.DateTimeField(auto_now=True)),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Force Update Version',
|
||||||
|
'verbose_name_plural': 'Force Update Version',
|
||||||
|
'db_table': 'force_update',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
||||||
@ -3,7 +3,7 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
"""App import"""
|
"""App import"""
|
||||||
from base.constants import USER_TYPE
|
from base.constants import USER_TYPE, DEVICE_TYPE
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
|
||||||
class UserProfile(models.Model):
|
class UserProfile(models.Model):
|
||||||
@ -165,3 +165,25 @@ class UserDeviceDetails(models.Model):
|
|||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.user.email
|
return self.user.email
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class ForceUpdate(models.Model):
|
||||||
|
"""
|
||||||
|
Force update
|
||||||
|
"""
|
||||||
|
"""Version ID"""
|
||||||
|
version = models.CharField(max_length=50, null=True, blank=True)
|
||||||
|
device_type = models.CharField(max_length=15, choices=DEVICE_TYPE, null=True, blank=True, default=None)
|
||||||
|
created_at = models.DateTimeField(auto_now_add=True)
|
||||||
|
updated_at = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
|
class Meta(object):
|
||||||
|
""" Meta information """
|
||||||
|
db_table = 'force_update'
|
||||||
|
verbose_name = 'Force Update Version'
|
||||||
|
verbose_name_plural = 'Force Update Version'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.version
|
||||||
|
|||||||
@ -117,13 +117,22 @@ class GoogleLoginViewSet(GoogleLoginMixin, viewsets.GenericViewSet):
|
|||||||
serializer_class = GoogleLoginSerializer
|
serializer_class = GoogleLoginSerializer
|
||||||
|
|
||||||
def create(self, request):
|
def create(self, request):
|
||||||
"""create method"""
|
"""Payload
|
||||||
|
{
|
||||||
|
"access_token",
|
||||||
|
"user_type": "1"
|
||||||
|
}"""
|
||||||
serializer = self.get_serializer(data=request.data)
|
serializer = self.get_serializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
return self.google_login(request)
|
return self.google_login(request)
|
||||||
|
|
||||||
class SigninWithApple(views.APIView):
|
class SigninWithApple(views.APIView):
|
||||||
"""This API is for sign in with Apple for app."""
|
"""This API is for sign in with Apple for app.
|
||||||
|
Payload
|
||||||
|
{
|
||||||
|
"access_token",
|
||||||
|
"user_type": "1"
|
||||||
|
}"""
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
token = request.data.get("access_token")
|
token = request.data.get("access_token")
|
||||||
user_type = request.data.get("user_type")
|
user_type = request.data.get("user_type")
|
||||||
@ -202,6 +211,10 @@ class ChangePasswordAPIView(views.APIView):
|
|||||||
def post(self, request):
|
def post(self, request):
|
||||||
"""
|
"""
|
||||||
POST request to change current login user password
|
POST request to change current login user password
|
||||||
|
Payload
|
||||||
|
{ "current_password":"Demo@123",
|
||||||
|
"new_password":"Demo@123"
|
||||||
|
}
|
||||||
"""
|
"""
|
||||||
serializer = ChangePasswordSerializer(
|
serializer = ChangePasswordSerializer(
|
||||||
context=request.user,
|
context=request.user,
|
||||||
@ -219,7 +232,12 @@ class ChangePasswordAPIView(views.APIView):
|
|||||||
)
|
)
|
||||||
|
|
||||||
class ResetPasswordAPIView(views.APIView):
|
class ResetPasswordAPIView(views.APIView):
|
||||||
"""Reset password"""
|
"""Reset password
|
||||||
|
Payload
|
||||||
|
{
|
||||||
|
"verification_code":"373770",
|
||||||
|
"password":"Demo@1323"
|
||||||
|
}"""
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
serializer = ResetPasswordSerializer(data=request.data)
|
serializer = ResetPasswordSerializer(data=request.data)
|
||||||
if serializer.is_valid():
|
if serializer.is_valid():
|
||||||
@ -236,7 +254,10 @@ class ForgotPasswordAPIView(views.APIView):
|
|||||||
def post(self, request):
|
def post(self, request):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Post method to validate serializer
|
Payload
|
||||||
|
{
|
||||||
|
"email": "abc@yopmail.com"
|
||||||
|
}
|
||||||
"""
|
"""
|
||||||
serializer = self.serializer_class(data=request.data)
|
serializer = self.serializer_class(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
@ -420,7 +441,12 @@ class AdminLoginViewSet(viewsets.GenericViewSet):
|
|||||||
|
|
||||||
|
|
||||||
class UserEmailVerification(viewsets.ModelViewSet):
|
class UserEmailVerification(viewsets.ModelViewSet):
|
||||||
"""User Email verification"""
|
"""User Email verification
|
||||||
|
Payload
|
||||||
|
{
|
||||||
|
"email":"ramu@yopmail.com",
|
||||||
|
"otp":"361123"
|
||||||
|
}"""
|
||||||
serializer_class = EmailVerificationSerializer
|
serializer_class = EmailVerificationSerializer
|
||||||
http_method_names = ('post',)
|
http_method_names = ('post',)
|
||||||
|
|
||||||
@ -483,7 +509,7 @@ class ReSendEmailOtp(viewsets.ModelViewSet):
|
|||||||
email_data.otp = otp
|
email_data.otp = otp
|
||||||
email_data.expired_at = expiry
|
email_data.expired_at = expiry
|
||||||
email_data.save()
|
email_data.save()
|
||||||
send_otp_email(request.data['email'], otp)
|
send_otp_email.delay(request.data['email'], otp)
|
||||||
return custom_response(SUCCESS_CODE['3016'], response_status=status.HTTP_200_OK)
|
return custom_response(SUCCESS_CODE['3016'], response_status=status.HTTP_200_OK)
|
||||||
else:
|
else:
|
||||||
return custom_error_response(ERROR_CODE["2023"], response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(ERROR_CODE["2023"], response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
@ -495,7 +521,9 @@ class ProfileAPIViewSet(viewsets.ModelViewSet):
|
|||||||
http_method_names = ('get',)
|
http_method_names = ('get',)
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
"""profile view"""
|
"""profile view
|
||||||
|
Params
|
||||||
|
user_type"""
|
||||||
if str(self.request.GET.get('user_type')) == '1':
|
if str(self.request.GET.get('user_type')) == '1':
|
||||||
junior_data = Junior.objects.filter(auth=self.request.user).last()
|
junior_data = Junior.objects.filter(auth=self.request.user).last()
|
||||||
if junior_data:
|
if junior_data:
|
||||||
@ -510,6 +538,7 @@ class ProfileAPIViewSet(viewsets.ModelViewSet):
|
|||||||
class UploadImageAPIViewSet(viewsets.ModelViewSet):
|
class UploadImageAPIViewSet(viewsets.ModelViewSet):
|
||||||
"""upload task image"""
|
"""upload task image"""
|
||||||
serializer_class = DefaultTaskImagesSerializer
|
serializer_class = DefaultTaskImagesSerializer
|
||||||
|
http_method_names = ('post',)
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
"""upload images"""
|
"""upload images"""
|
||||||
image_data = request.data['image_url']
|
image_data = request.data['image_url']
|
||||||
@ -529,6 +558,7 @@ class DefaultImageAPIViewSet(viewsets.ModelViewSet):
|
|||||||
"""Profile viewset"""
|
"""Profile viewset"""
|
||||||
serializer_class = DefaultTaskImagesDetailsSerializer
|
serializer_class = DefaultTaskImagesDetailsSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
http_method_names = ('get',)
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
"""profile view"""
|
"""profile view"""
|
||||||
queryset = DefaultTaskImages.objects.all()
|
queryset = DefaultTaskImages.objects.all()
|
||||||
@ -565,8 +595,9 @@ class UserNotificationAPIViewSet(viewsets.ModelViewSet):
|
|||||||
"""notification viewset"""
|
"""notification viewset"""
|
||||||
serializer_class = UserNotificationSerializer
|
serializer_class = UserNotificationSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
http_method_names = ('get',)
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
"""profile view"""
|
"""notification view"""
|
||||||
queryset = UserNotification.objects.filter(user=request.user)
|
queryset = UserNotification.objects.filter(user=request.user)
|
||||||
serializer = UserNotificationSerializer(queryset, many=True)
|
serializer = UserNotificationSerializer(queryset, many=True)
|
||||||
return custom_response(None, serializer.data, response_status=status.HTTP_200_OK)
|
return custom_response(None, serializer.data, response_status=status.HTTP_200_OK)
|
||||||
@ -576,9 +607,14 @@ class UpdateUserNotificationAPIViewSet(viewsets.ModelViewSet):
|
|||||||
"""Update notification viewset"""
|
"""Update notification viewset"""
|
||||||
serializer_class = UpdateUserNotificationSerializer
|
serializer_class = UpdateUserNotificationSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
http_method_names = ('post',)
|
||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
"""profile view"""
|
"""Payload
|
||||||
|
{"email_notification": false,
|
||||||
|
"sms_notification": false,
|
||||||
|
"push_notification": false}
|
||||||
|
"""
|
||||||
serializer = UpdateUserNotificationSerializer(data=request.data,
|
serializer = UpdateUserNotificationSerializer(data=request.data,
|
||||||
context=request.user)
|
context=request.user)
|
||||||
if serializer.is_valid():
|
if serializer.is_valid():
|
||||||
@ -588,7 +624,12 @@ class UpdateUserNotificationAPIViewSet(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
|
|
||||||
class SendSupportEmail(views.APIView):
|
class SendSupportEmail(views.APIView):
|
||||||
"""support email api"""
|
"""support email api
|
||||||
|
payload
|
||||||
|
name
|
||||||
|
email
|
||||||
|
message
|
||||||
|
"""
|
||||||
permission_classes = (IsAuthenticated,)
|
permission_classes = (IsAuthenticated,)
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
|
|||||||
@ -50,7 +50,10 @@ USER_TYPE = (
|
|||||||
('2', 'guardian'),
|
('2', 'guardian'),
|
||||||
('3', 'superuser')
|
('3', 'superuser')
|
||||||
)
|
)
|
||||||
|
DEVICE_TYPE = (
|
||||||
|
('1', 'android'),
|
||||||
|
('2', 'ios')
|
||||||
|
)
|
||||||
USER_TYPE_FLAG = {
|
USER_TYPE_FLAG = {
|
||||||
"FIRST" : "1",
|
"FIRST" : "1",
|
||||||
"TWO" : "2",
|
"TWO" : "2",
|
||||||
|
|||||||
@ -73,7 +73,7 @@ class SignupViewset(viewsets.ModelViewSet):
|
|||||||
UserEmailOtp.objects.create(email=request.data['email'], otp=otp,
|
UserEmailOtp.objects.create(email=request.data['email'], otp=otp,
|
||||||
user_type=str(request.data['user_type']), expired_at=expiry)
|
user_type=str(request.data['user_type']), expired_at=expiry)
|
||||||
"""Send email to the register user"""
|
"""Send email to the register user"""
|
||||||
send_otp_email(request.data['email'], otp)
|
send_otp_email.delay(request.data['email'], otp)
|
||||||
UserDeviceDetails.objects.create(user=user, device_id=device_id)
|
UserDeviceDetails.objects.create(user=user, device_id=device_id)
|
||||||
return custom_response(SUCCESS_CODE['3001'],
|
return custom_response(SUCCESS_CODE['3001'],
|
||||||
response_status=status.HTTP_200_OK)
|
response_status=status.HTTP_200_OK)
|
||||||
@ -129,7 +129,11 @@ class AllTaskListAPIView(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
|
|
||||||
class TaskListAPIView(viewsets.ModelViewSet):
|
class TaskListAPIView(viewsets.ModelViewSet):
|
||||||
"""Update guardian profile"""
|
"""Task list
|
||||||
|
Params
|
||||||
|
status
|
||||||
|
search
|
||||||
|
page"""
|
||||||
serializer_class = TaskDetailsSerializer
|
serializer_class = TaskDetailsSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
filter_backends = (SearchFilter,)
|
filter_backends = (SearchFilter,)
|
||||||
@ -206,7 +210,7 @@ class CreateTaskAPIView(viewsets.ModelViewSet):
|
|||||||
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
class SearchTaskListAPIView(viewsets.ModelViewSet):
|
class SearchTaskListAPIView(viewsets.ModelViewSet):
|
||||||
"""Update guardian profile"""
|
"""Filter task"""
|
||||||
serializer_class = TaskDetailsSerializer
|
serializer_class = TaskDetailsSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
pagination_class = PageNumberPagination
|
pagination_class = PageNumberPagination
|
||||||
@ -221,7 +225,7 @@ class SearchTaskListAPIView(viewsets.ModelViewSet):
|
|||||||
return junior_queryset
|
return junior_queryset
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
"""Create guardian profile"""
|
"""Filter task"""
|
||||||
try:
|
try:
|
||||||
queryset = self.get_queryset()
|
queryset = self.get_queryset()
|
||||||
paginator = self.pagination_class()
|
paginator = self.pagination_class()
|
||||||
@ -235,10 +239,12 @@ class SearchTaskListAPIView(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
|
|
||||||
class TopJuniorListAPIView(viewsets.ModelViewSet):
|
class TopJuniorListAPIView(viewsets.ModelViewSet):
|
||||||
"""Top juniors list"""
|
"""Top juniors list
|
||||||
|
No Params"""
|
||||||
queryset = JuniorPoints.objects.all()
|
queryset = JuniorPoints.objects.all()
|
||||||
serializer_class = TopJuniorSerializer
|
serializer_class = TopJuniorSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
http_method_names = ('get',)
|
||||||
|
|
||||||
def get_serializer_context(self):
|
def get_serializer_context(self):
|
||||||
# context list
|
# context list
|
||||||
@ -349,7 +355,8 @@ class GuardianListAPIView(viewsets.ModelViewSet):
|
|||||||
http_method_names = ('get',)
|
http_method_names = ('get',)
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
""" junior list"""
|
""" Guardian list of assosicated junior
|
||||||
|
No Params"""
|
||||||
try:
|
try:
|
||||||
guardian_data = JuniorGuardianRelationship.objects.filter(junior__auth__email=self.request.user)
|
guardian_data = JuniorGuardianRelationship.objects.filter(junior__auth__email=self.request.user)
|
||||||
# fetch junior object
|
# fetch junior object
|
||||||
|
|||||||
@ -97,8 +97,9 @@ class CreateJuniorSerializer(serializers.ModelSerializer):
|
|||||||
if guardian_data:
|
if guardian_data:
|
||||||
JuniorGuardianRelationship.objects.get_or_create(guardian=guardian_data, junior=junior)
|
JuniorGuardianRelationship.objects.get_or_create(guardian=guardian_data, junior=junior)
|
||||||
junior.guardian_code_status = str(NUMBER['three'])
|
junior.guardian_code_status = str(NUMBER['three'])
|
||||||
junior_approval_mail(user.email, user.first_name)
|
junior_approval_mail.delay(user.email, user.first_name)
|
||||||
send_notification_to_guardian.delay(ASSOCIATE_REQUEST, junior.auth.id, guardian_data.user.id, {})
|
send_notification_to_guardian.delay(ASSOCIATE_REQUEST, junior.auth.id, guardian_data.user.id, {})
|
||||||
|
|
||||||
junior.dob = validated_data.get('dob', junior.dob)
|
junior.dob = validated_data.get('dob', junior.dob)
|
||||||
junior.passcode = validated_data.get('passcode', junior.passcode)
|
junior.passcode = validated_data.get('passcode', junior.passcode)
|
||||||
junior.country_name = validated_data.get('country_name', junior.country_name)
|
junior.country_name = validated_data.get('country_name', junior.country_name)
|
||||||
@ -304,7 +305,7 @@ class AddJuniorSerializer(serializers.ModelSerializer):
|
|||||||
# add push notification
|
# add push notification
|
||||||
UserNotification.objects.get_or_create(user=user_data)
|
UserNotification.objects.get_or_create(user=user_data)
|
||||||
"""Notification email"""
|
"""Notification email"""
|
||||||
junior_notification_email(email, full_name, email, password)
|
junior_notification_email.delay(email, full_name, email, password)
|
||||||
# push notification
|
# push notification
|
||||||
send_notification_to_junior.delay(SKIPPED_PROFILE_SETUP, None, junior_data.auth.id, {})
|
send_notification_to_junior.delay(SKIPPED_PROFILE_SETUP, None, junior_data.auth.id, {})
|
||||||
return junior_data
|
return junior_data
|
||||||
@ -450,7 +451,7 @@ class AddGuardianSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
"""Notification email"""
|
"""Notification email"""
|
||||||
junior_notification_email(email, full_name, email, password)
|
junior_notification_email(email, full_name, email, password)
|
||||||
junior_approval_mail(email, full_name)
|
junior_approval_mail.delay(email, full_name)
|
||||||
send_notification_to_junior.delay(INVITATION, guardian_data.user.id, junior_data.auth.id, {})
|
send_notification_to_junior.delay(INVITATION, guardian_data.user.id, junior_data.auth.id, {})
|
||||||
send_notification_to_guardian.delay(ASSOCIATE_REQUEST, junior_data.auth.id, guardian_data.user.id, {})
|
send_notification_to_guardian.delay(ASSOCIATE_REQUEST, junior_data.auth.id, guardian_data.user.id, {})
|
||||||
return guardian_data
|
return guardian_data
|
||||||
|
|||||||
@ -14,6 +14,8 @@ from django.db.models import F
|
|||||||
# being part of the zod bank and access the platform
|
# being part of the zod bank and access the platform
|
||||||
# define junior notification email
|
# define junior notification email
|
||||||
# junior approval email
|
# junior approval email
|
||||||
|
from celery import shared_task
|
||||||
|
@shared_task()
|
||||||
def junior_notification_email(recipient_email, full_name, email, password):
|
def junior_notification_email(recipient_email, full_name, email, password):
|
||||||
"""Notification email"""
|
"""Notification email"""
|
||||||
from_email = settings.EMAIL_FROM_ADDRESS
|
from_email = settings.EMAIL_FROM_ADDRESS
|
||||||
@ -32,7 +34,7 @@ def junior_notification_email(recipient_email, full_name, email, password):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
return full_name
|
return full_name
|
||||||
|
@shared_task()
|
||||||
def junior_approval_mail(guardian, full_name):
|
def junior_approval_mail(guardian, full_name):
|
||||||
"""junior approval mail"""
|
"""junior approval mail"""
|
||||||
from_email = settings.EMAIL_FROM_ADDRESS
|
from_email = settings.EMAIL_FROM_ADDRESS
|
||||||
|
|||||||
@ -74,7 +74,7 @@ class UpdateJuniorProfile(viewsets.ModelViewSet):
|
|||||||
http_method_names = ('post',)
|
http_method_names = ('post',)
|
||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
"""Use CreateJuniorSerializer"""
|
"""Create Junior Profile"""
|
||||||
try:
|
try:
|
||||||
request_data = request.data
|
request_data = request.data
|
||||||
image = request.data.get('image')
|
image = request.data.get('image')
|
||||||
@ -104,9 +104,13 @@ class UpdateJuniorProfile(viewsets.ModelViewSet):
|
|||||||
class ValidateGuardianCode(viewsets.ModelViewSet):
|
class ValidateGuardianCode(viewsets.ModelViewSet):
|
||||||
"""Check guardian code exist or not"""
|
"""Check guardian code exist or not"""
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
http_method_names = ('get',)
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
"""check guardian code"""
|
"""check guardian code
|
||||||
|
Params
|
||||||
|
"guardian_code"
|
||||||
|
"""
|
||||||
try:
|
try:
|
||||||
guardian_code = self.request.GET.get('guardian_code').split(',')
|
guardian_code = self.request.GET.get('guardian_code').split(',')
|
||||||
for code in guardian_code:
|
for code in guardian_code:
|
||||||
@ -216,7 +220,7 @@ class AddJuniorAPIView(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
|
|
||||||
class InvitedJuniorAPIView(viewsets.ModelViewSet):
|
class InvitedJuniorAPIView(viewsets.ModelViewSet):
|
||||||
"""Junior list of assosicated guardian"""
|
"""Invited Junior list of assosicated guardian"""
|
||||||
|
|
||||||
serializer_class = JuniorDetailListSerializer
|
serializer_class = JuniorDetailListSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
@ -230,7 +234,8 @@ class InvitedJuniorAPIView(viewsets.ModelViewSet):
|
|||||||
is_invited=True)
|
is_invited=True)
|
||||||
return junior_queryset
|
return junior_queryset
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
""" junior list"""
|
""" Invited Junior list of assosicated guardian
|
||||||
|
No Params"""
|
||||||
try:
|
try:
|
||||||
queryset = self.get_queryset()
|
queryset = self.get_queryset()
|
||||||
paginator = self.pagination_class()
|
paginator = self.pagination_class()
|
||||||
@ -273,7 +278,7 @@ class FilterJuniorAPIView(viewsets.ModelViewSet):
|
|||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
"""Create guardian profile"""
|
"""Filter junior"""
|
||||||
try:
|
try:
|
||||||
queryset = self.get_queryset()
|
queryset = self.get_queryset()
|
||||||
paginator = self.pagination_class()
|
paginator = self.pagination_class()
|
||||||
@ -287,7 +292,9 @@ class FilterJuniorAPIView(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
|
|
||||||
class RemoveJuniorAPIView(views.APIView):
|
class RemoveJuniorAPIView(views.APIView):
|
||||||
"""Remove junior API"""
|
"""Remove junior API
|
||||||
|
Params
|
||||||
|
id=37"""
|
||||||
serializer_class = RemoveJuniorSerializer
|
serializer_class = RemoveJuniorSerializer
|
||||||
model = Junior
|
model = Junior
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
@ -315,14 +322,17 @@ class RemoveJuniorAPIView(views.APIView):
|
|||||||
|
|
||||||
|
|
||||||
class JuniorTaskListAPIView(viewsets.ModelViewSet):
|
class JuniorTaskListAPIView(viewsets.ModelViewSet):
|
||||||
"""Update guardian profile"""
|
"""Junior task list"""
|
||||||
serializer_class = TaskDetailsjuniorSerializer
|
serializer_class = TaskDetailsjuniorSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
pagination_class = PageNumberPagination
|
pagination_class = PageNumberPagination
|
||||||
http_method_names = ('get',)
|
http_method_names = ('get',)
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
"""Create guardian profile"""
|
"""Junior task list
|
||||||
|
status=0
|
||||||
|
search='title'
|
||||||
|
page=1"""
|
||||||
try:
|
try:
|
||||||
status_value = self.request.GET.get('status')
|
status_value = self.request.GET.get('status')
|
||||||
search = self.request.GET.get('search')
|
search = self.request.GET.get('search')
|
||||||
@ -352,7 +362,9 @@ class JuniorTaskListAPIView(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
|
|
||||||
class CompleteJuniorTaskAPIView(views.APIView):
|
class CompleteJuniorTaskAPIView(views.APIView):
|
||||||
"""Update junior task API"""
|
"""Payload
|
||||||
|
task_id
|
||||||
|
image"""
|
||||||
serializer_class = CompleteTaskSerializer
|
serializer_class = CompleteTaskSerializer
|
||||||
model = JuniorTask
|
model = JuniorTask
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
@ -397,7 +409,8 @@ class JuniorPointsListAPIView(viewsets.ModelViewSet):
|
|||||||
http_method_names = ('get',)
|
http_method_names = ('get',)
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
"""profile view"""
|
"""Junior Points
|
||||||
|
No Params"""
|
||||||
try:
|
try:
|
||||||
update_positions_based_on_points()
|
update_positions_based_on_points()
|
||||||
queryset = JuniorPoints.objects.filter(junior__auth__email=self.request.user).last()
|
queryset = JuniorPoints.objects.filter(junior__auth__email=self.request.user).last()
|
||||||
@ -467,7 +480,11 @@ class InviteGuardianAPIView(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
|
|
||||||
class StartTaskAPIView(views.APIView):
|
class StartTaskAPIView(views.APIView):
|
||||||
"""Update junior task API"""
|
"""Update junior task API
|
||||||
|
Paylod
|
||||||
|
{
|
||||||
|
"task_id":28
|
||||||
|
}"""
|
||||||
serializer_class = StartTaskSerializer
|
serializer_class = StartTaskSerializer
|
||||||
model = JuniorTask
|
model = JuniorTask
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
@ -491,7 +508,13 @@ class StartTaskAPIView(views.APIView):
|
|||||||
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
class ReAssignJuniorTaskAPIView(views.APIView):
|
class ReAssignJuniorTaskAPIView(views.APIView):
|
||||||
"""Update junior task API"""
|
"""Update junior task API
|
||||||
|
Payload
|
||||||
|
{
|
||||||
|
"task_id":34,
|
||||||
|
"due_date":"2023-08-22"
|
||||||
|
}
|
||||||
|
"""
|
||||||
serializer_class = ReAssignTaskSerializer
|
serializer_class = ReAssignTaskSerializer
|
||||||
model = JuniorTask
|
model = JuniorTask
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
@ -520,7 +543,10 @@ class StartArticleAPIView(viewsets.ModelViewSet):
|
|||||||
http_method_names = ('post',)
|
http_method_names = ('post',)
|
||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
""" junior list"""
|
""" Payload
|
||||||
|
{
|
||||||
|
"article_id":"2"
|
||||||
|
}"""
|
||||||
try:
|
try:
|
||||||
junior_instance = Junior.objects.filter(auth=self.request.user).last()
|
junior_instance = Junior.objects.filter(auth=self.request.user).last()
|
||||||
article_id = request.data.get('article_id')
|
article_id = request.data.get('article_id')
|
||||||
@ -542,7 +568,7 @@ class StartArticleAPIView(viewsets.ModelViewSet):
|
|||||||
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
class StartAssessmentAPIView(viewsets.ModelViewSet):
|
class StartAssessmentAPIView(viewsets.ModelViewSet):
|
||||||
"""Junior Points viewset"""
|
"""Question answer viewset"""
|
||||||
serializer_class = StartAssessmentSerializer
|
serializer_class = StartAssessmentSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
http_method_names = ('get',)
|
http_method_names = ('get',)
|
||||||
@ -555,7 +581,9 @@ class StartAssessmentAPIView(viewsets.ModelViewSet):
|
|||||||
).order_by('-created_at')
|
).order_by('-created_at')
|
||||||
return article
|
return article
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
"""profile view"""
|
"""Params
|
||||||
|
article_id
|
||||||
|
"""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
queryset = self.get_queryset()
|
queryset = self.get_queryset()
|
||||||
@ -567,7 +595,9 @@ class StartAssessmentAPIView(viewsets.ModelViewSet):
|
|||||||
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
class CheckAnswerAPIView(viewsets.ModelViewSet):
|
class CheckAnswerAPIView(viewsets.ModelViewSet):
|
||||||
"""Junior Points viewset"""
|
"""Params
|
||||||
|
question_id=1
|
||||||
|
answer_id=1"""
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
http_method_names = ('get',)
|
http_method_names = ('get',)
|
||||||
|
|
||||||
@ -576,7 +606,10 @@ class CheckAnswerAPIView(viewsets.ModelViewSet):
|
|||||||
article = ArticleSurvey.objects.filter(id=question_id).last()
|
article = ArticleSurvey.objects.filter(id=question_id).last()
|
||||||
return article
|
return article
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
"""profile view"""
|
""" Params
|
||||||
|
question_id=1
|
||||||
|
answer_id=1
|
||||||
|
"""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
answer_id = self.request.GET.get('answer_id')
|
answer_id = self.request.GET.get('answer_id')
|
||||||
@ -600,7 +633,9 @@ class CheckAnswerAPIView(viewsets.ModelViewSet):
|
|||||||
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
class CompleteArticleAPIView(views.APIView):
|
class CompleteArticleAPIView(views.APIView):
|
||||||
"""Remove junior API"""
|
"""Params
|
||||||
|
article_id
|
||||||
|
"""
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
http_method_names = ('put', 'get',)
|
http_method_names = ('put', 'get',)
|
||||||
def put(self, request, format=None):
|
def put(self, request, format=None):
|
||||||
@ -614,7 +649,8 @@ class CompleteArticleAPIView(views.APIView):
|
|||||||
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
""" junior list"""
|
""" Params
|
||||||
|
article_id=1"""
|
||||||
try:
|
try:
|
||||||
article_id = self.request.GET.get('article_id')
|
article_id = self.request.GET.get('article_id')
|
||||||
total_earn_points = JuniorArticlePoints.objects.filter(junior__auth=request.user,
|
total_earn_points = JuniorArticlePoints.objects.filter(junior__auth=request.user,
|
||||||
@ -628,12 +664,16 @@ class CompleteArticleAPIView(views.APIView):
|
|||||||
|
|
||||||
|
|
||||||
class ReadArticleCardAPIView(views.APIView):
|
class ReadArticleCardAPIView(views.APIView):
|
||||||
"""Remove junior API"""
|
"""Read article card API"""
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
http_method_names = ('put',)
|
http_method_names = ('put',)
|
||||||
|
|
||||||
def put(self, request, *args, **kwargs):
|
def put(self, request, *args, **kwargs):
|
||||||
""" junior list"""
|
""" Read article card
|
||||||
|
Payload
|
||||||
|
{"article_id":"1",
|
||||||
|
"article_card":"2",
|
||||||
|
"current_page":"2"}"""
|
||||||
try:
|
try:
|
||||||
junior_instance = Junior.objects.filter(auth=self.request.user).last()
|
junior_instance = Junior.objects.filter(auth=self.request.user).last()
|
||||||
article = self.request.data.get('article_id')
|
article = self.request.data.get('article_id')
|
||||||
@ -677,7 +717,8 @@ class CreateArticleCardAPIView(viewsets.ModelViewSet):
|
|||||||
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
class RemoveGuardianCodeAPIView(views.APIView):
|
class RemoveGuardianCodeAPIView(views.APIView):
|
||||||
"""Update junior task API"""
|
"""Remove guardian code request API
|
||||||
|
No Payload"""
|
||||||
serializer_class = RemoveGuardianCodeSerializer
|
serializer_class = RemoveGuardianCodeSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
|
||||||
@ -714,7 +755,7 @@ class FAQViewSet(GenericViewSet, mixins.CreateModelMixin,
|
|||||||
"""
|
"""
|
||||||
faq create api method
|
faq create api method
|
||||||
:param request:
|
:param request:
|
||||||
:param args:
|
:param args: question, description
|
||||||
:param kwargs:
|
:param kwargs:
|
||||||
:return: success message
|
:return: success message
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -77,7 +77,11 @@ class NotificationViewSet(viewsets.GenericViewSet):
|
|||||||
|
|
||||||
|
|
||||||
class ReadNotification(views.APIView):
|
class ReadNotification(views.APIView):
|
||||||
"""Update notification API"""
|
"""Update notification API
|
||||||
|
Payload
|
||||||
|
{
|
||||||
|
"notification_id": []
|
||||||
|
}"""
|
||||||
serializer_class = ReadNotificationSerializer
|
serializer_class = ReadNotificationSerializer
|
||||||
model = Notification
|
model = Notification
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
|||||||
@ -248,7 +248,9 @@ class ArticleListViewSet(GenericViewSet, mixins.ListModelMixin):
|
|||||||
return custom_response(None, data=serializer.data)
|
return custom_response(None, data=serializer.data)
|
||||||
|
|
||||||
class ArticleCardListViewSet(viewsets.ModelViewSet):
|
class ArticleCardListViewSet(viewsets.ModelViewSet):
|
||||||
"""Junior Points viewset"""
|
"""Article card list
|
||||||
|
use below query param
|
||||||
|
article_id"""
|
||||||
serializer_class = ArticleCardlistSerializer
|
serializer_class = ArticleCardlistSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
http_method_names = ('get',)
|
http_method_names = ('get',)
|
||||||
@ -257,7 +259,9 @@ class ArticleCardListViewSet(viewsets.ModelViewSet):
|
|||||||
"""get queryset"""
|
"""get queryset"""
|
||||||
return ArticleCard.objects.filter(article=self.request.GET.get('article_id'))
|
return ArticleCard.objects.filter(article=self.request.GET.get('article_id'))
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
"""profile view"""
|
"""Article card list
|
||||||
|
use below query param
|
||||||
|
article_id"""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
queryset = self.get_queryset()
|
queryset = self.get_queryset()
|
||||||
|
|||||||
Reference in New Issue
Block a user