mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-16 02:16:16 +00:00
jira-15 dashboard api profile, default image, top leaderboard API
This commit is contained in:
@ -2,8 +2,17 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
"""Import django app"""
|
"""Import django app"""
|
||||||
from .models import UserProfile, UserEmailOtp, UserPhoneOtp
|
from .models import UserProfile, UserEmailOtp, UserPhoneOtp, DefaultTaskImages
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
|
|
||||||
|
@admin.register(DefaultTaskImages)
|
||||||
|
class DefaultTaskImagesAdmin(admin.ModelAdmin):
|
||||||
|
"""User profile admin"""
|
||||||
|
list_display = ['task_name', 'image_url']
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.image_url
|
||||||
|
|
||||||
@admin.register(UserProfile)
|
@admin.register(UserProfile)
|
||||||
class UserProfileAdmin(admin.ModelAdmin):
|
class UserProfileAdmin(admin.ModelAdmin):
|
||||||
"""User profile admin"""
|
"""User profile admin"""
|
||||||
|
26
account/migrations/0003_defaulttaskimages.py
Normal file
26
account/migrations/0003_defaulttaskimages.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# Generated by Django 4.2.2 on 2023-07-07 10:23
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('account', '0002_useremailotp_user_type'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='DefaultTaskImages',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('task_name', models.CharField(max_length=15)),
|
||||||
|
('image_url', models.URLField(blank=True, default=None, null=True)),
|
||||||
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||||
|
('updated_at', models.DateTimeField(auto_now=True)),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'db_table': 'default_task_image',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
@ -74,3 +74,19 @@ class UserEmailOtp(models.Model):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
"""return phone as an object"""
|
"""return phone as an object"""
|
||||||
return self.email
|
return self.email
|
||||||
|
|
||||||
|
class DefaultTaskImages(models.Model):
|
||||||
|
"""Default images upload in oss bucket"""
|
||||||
|
|
||||||
|
task_name = models.CharField(max_length=15)
|
||||||
|
image_url = models.URLField(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 = 'default_task_image'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
"""return phone as an object"""
|
||||||
|
return self.task_name
|
||||||
|
@ -2,7 +2,7 @@ from rest_framework import serializers
|
|||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from guardian.models import Guardian
|
from guardian.models import Guardian
|
||||||
from junior.models import Junior
|
from junior.models import Junior
|
||||||
from account.models import UserProfile, UserEmailOtp, UserPhoneOtp
|
from account.models import UserProfile, UserEmailOtp, UserPhoneOtp, DefaultTaskImages
|
||||||
from base.constants import GUARDIAN, JUNIOR, SUPERUSER
|
from base.constants import GUARDIAN, JUNIOR, SUPERUSER
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from base.messages import ERROR_CODE_REQUIRED, ERROR_CODE, SUCCESS_CODE, STATUS_CODE_ERROR
|
from base.messages import ERROR_CODE_REQUIRED, ERROR_CODE, SUCCESS_CODE, STATUS_CODE_ERROR
|
||||||
@ -204,3 +204,21 @@ class EmailVerificationSerializer(serializers.ModelSerializer):
|
|||||||
model = UserEmailOtp
|
model = UserEmailOtp
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class DefaultTaskImagesSerializer(serializers.ModelSerializer):
|
||||||
|
"""Update Password after verification"""
|
||||||
|
class Meta(object):
|
||||||
|
"""Meta info"""
|
||||||
|
model = DefaultTaskImages
|
||||||
|
fields = ['task_name', 'image_url']
|
||||||
|
def create(self, validated_data):
|
||||||
|
data = DefaultTaskImages.objects.create(**validated_data)
|
||||||
|
return data
|
||||||
|
|
||||||
|
class DefaultTaskImagesDetailsSerializer(serializers.ModelSerializer):
|
||||||
|
"""Update Password after verification"""
|
||||||
|
class Meta(object):
|
||||||
|
"""Meta info"""
|
||||||
|
model = DefaultTaskImages
|
||||||
|
fields = '__all__'
|
||||||
|
@ -6,7 +6,8 @@ from rest_framework.decorators import api_view
|
|||||||
from rest_framework import routers
|
from rest_framework import routers
|
||||||
from .views import (UserLogin, SendPhoneOtp, UserPhoneVerification, UserEmailVerification, ReSendEmailOtp,
|
from .views import (UserLogin, SendPhoneOtp, UserPhoneVerification, UserEmailVerification, ReSendEmailOtp,
|
||||||
ForgotPasswordAPIView, ResetPasswordAPIView, ChangePasswordAPIView, UpdateProfileImage,
|
ForgotPasswordAPIView, ResetPasswordAPIView, ChangePasswordAPIView, UpdateProfileImage,
|
||||||
GoogleLoginViewSet, SigninWithApple)
|
GoogleLoginViewSet, SigninWithApple, ProfileAPIViewSet, UploadImageAPIViewSet,
|
||||||
|
DefaultImageAPIViewSet)
|
||||||
"""Router"""
|
"""Router"""
|
||||||
router = routers.SimpleRouter()
|
router = routers.SimpleRouter()
|
||||||
|
|
||||||
@ -18,6 +19,9 @@ router.register('google-login', GoogleLoginViewSet, basename='admin')
|
|||||||
# router.register('user-phone-verification', UserPhoneVerification, basename='user-phone-verification')
|
# router.register('user-phone-verification', UserPhoneVerification, basename='user-phone-verification')
|
||||||
router.register('user-email-verification', UserEmailVerification, basename='user-email-verification')
|
router.register('user-email-verification', UserEmailVerification, basename='user-email-verification')
|
||||||
router.register('resend-email-otp', ReSendEmailOtp, basename='resend-email-otp')
|
router.register('resend-email-otp', ReSendEmailOtp, basename='resend-email-otp')
|
||||||
|
router.register('profile', ProfileAPIViewSet, basename='profile')
|
||||||
|
router.register('upload-default-task-image', UploadImageAPIViewSet, basename='upload-default-task-image')
|
||||||
|
router.register('default-task-image', DefaultImageAPIViewSet, basename='default-task-image')
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('api/v1/', include(router.urls)),
|
path('api/v1/', include(router.urls)),
|
||||||
path('api/v1/forgot-password/', ForgotPasswordAPIView.as_view()),
|
path('api/v1/forgot-password/', ForgotPasswordAPIView.as_view()),
|
||||||
|
@ -10,11 +10,12 @@ from guardian.utils import upload_image_to_alibaba
|
|||||||
from django.contrib.auth import authenticate, login
|
from django.contrib.auth import authenticate, login
|
||||||
from guardian.models import Guardian
|
from guardian.models import Guardian
|
||||||
from junior.models import Junior
|
from junior.models import Junior
|
||||||
from account.models import UserProfile, UserPhoneOtp, UserEmailOtp
|
from account.models import UserProfile, UserPhoneOtp, UserEmailOtp, DefaultTaskImages
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from .serializers import (SuperUserSerializer, GuardianSerializer, JuniorSerializer, EmailVerificationSerializer,
|
from .serializers import (SuperUserSerializer, GuardianSerializer, JuniorSerializer, EmailVerificationSerializer,
|
||||||
ForgotPasswordSerializer, ResetPasswordSerializer, ChangePasswordSerializer,
|
ForgotPasswordSerializer, ResetPasswordSerializer, ChangePasswordSerializer,
|
||||||
GoogleLoginSerializer, UpdateGuardianImageSerializer, UpdateJuniorProfileImageSerializer)
|
GoogleLoginSerializer, UpdateGuardianImageSerializer, UpdateJuniorProfileImageSerializer,
|
||||||
|
DefaultTaskImagesSerializer, DefaultTaskImagesDetailsSerializer)
|
||||||
from rest_framework_simplejwt.tokens import RefreshToken
|
from rest_framework_simplejwt.tokens import RefreshToken
|
||||||
from base.messages import ERROR_CODE, SUCCESS_CODE
|
from base.messages import ERROR_CODE, SUCCESS_CODE
|
||||||
from guardian.tasks import generate_otp
|
from guardian.tasks import generate_otp
|
||||||
@ -29,7 +30,8 @@ from rest_framework.response import Response
|
|||||||
import requests
|
import requests
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from .utils import get_token
|
from .utils import get_token
|
||||||
|
from junior.serializers import JuniorProfileSerializer
|
||||||
|
from guardian.serializers import GuardianProfileSerializer
|
||||||
|
|
||||||
class GoogleLoginMixin:
|
class GoogleLoginMixin:
|
||||||
def google_login(self, request):
|
def google_login(self, request):
|
||||||
@ -159,6 +161,7 @@ class UpdateProfileImage(views.APIView):
|
|||||||
return custom_error_response(serializer.errors, response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(serializer.errors, response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
class ChangePasswordAPIView(views.APIView):
|
class ChangePasswordAPIView(views.APIView):
|
||||||
|
serializer_class = ChangePasswordSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
serializer = ChangePasswordSerializer(context=request.user, data=request.data)
|
serializer = ChangePasswordSerializer(context=request.user, data=request.data)
|
||||||
@ -212,6 +215,7 @@ class ForgotPasswordAPIView(views.APIView):
|
|||||||
|
|
||||||
class SendPhoneOtp(viewsets.ModelViewSet):
|
class SendPhoneOtp(viewsets.ModelViewSet):
|
||||||
"""Send otp on phone"""
|
"""Send otp on phone"""
|
||||||
|
queryset = UserPhoneOtp.objects.all()
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
otp = generate_otp()
|
otp = generate_otp()
|
||||||
phone_number = self.request.data['phone']
|
phone_number = self.request.data['phone']
|
||||||
@ -227,6 +231,7 @@ class SendPhoneOtp(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
class UserPhoneVerification(viewsets.ModelViewSet):
|
class UserPhoneVerification(viewsets.ModelViewSet):
|
||||||
"""Send otp on phone"""
|
"""Send otp on phone"""
|
||||||
|
queryset = UserPhoneOtp.objects.all()
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
try:
|
try:
|
||||||
phone_data = UserPhoneOtp.objects.filter(phone=self.request.GET.get('phone'),
|
phone_data = UserPhoneOtp.objects.filter(phone=self.request.GET.get('phone'),
|
||||||
@ -305,6 +310,7 @@ class UserLogin(viewsets.ViewSet):
|
|||||||
class UserEmailVerification(viewsets.ModelViewSet):
|
class UserEmailVerification(viewsets.ModelViewSet):
|
||||||
"""User Email verification"""
|
"""User Email verification"""
|
||||||
serializer_class = EmailVerificationSerializer
|
serializer_class = EmailVerificationSerializer
|
||||||
|
queryset = UserEmailOtp.objects.all()
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
try:
|
try:
|
||||||
@ -344,6 +350,7 @@ class UserEmailVerification(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
class ReSendEmailOtp(viewsets.ModelViewSet):
|
class ReSendEmailOtp(viewsets.ModelViewSet):
|
||||||
"""Send otp on phone"""
|
"""Send otp on phone"""
|
||||||
|
queryset = UserEmailOtp.objects.all()
|
||||||
serializer_class = EmailVerificationSerializer
|
serializer_class = EmailVerificationSerializer
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
otp = generate_otp()
|
otp = generate_otp()
|
||||||
@ -361,3 +368,47 @@ class ReSendEmailOtp(viewsets.ModelViewSet):
|
|||||||
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)
|
||||||
|
|
||||||
|
class ProfileAPIViewSet(viewsets.ModelViewSet):
|
||||||
|
"""Profile viewset"""
|
||||||
|
queryset = User.objects.all()
|
||||||
|
serializer_class = [JuniorProfileSerializer, GuardianProfileSerializer]
|
||||||
|
def list(self, request, *args, **kwargs):
|
||||||
|
"""profile view"""
|
||||||
|
if str(self.request.GET.get('user_type')) == '1':
|
||||||
|
junior_data = Junior.objects.filter(auth=self.request.user).last()
|
||||||
|
if junior_data:
|
||||||
|
serializer = JuniorProfileSerializer(junior_data)
|
||||||
|
if str(self.request.GET.get('user_type')) == '2':
|
||||||
|
guardian_data = Guardian.objects.filter(user=self.request.user).last()
|
||||||
|
if guardian_data:
|
||||||
|
serializer = GuardianProfileSerializer(guardian_data)
|
||||||
|
return custom_response(None, serializer.data, response_status=status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
|
class UploadImageAPIViewSet(viewsets.ModelViewSet):
|
||||||
|
"""Profile viewset"""
|
||||||
|
queryset = DefaultTaskImages.objects.all()
|
||||||
|
serializer_class = DefaultTaskImagesSerializer
|
||||||
|
def create(self, request, *args, **kwargs):
|
||||||
|
"""profile view"""
|
||||||
|
image_data = request.data['image_url']
|
||||||
|
filename = f"default_task_images/{image_data.name}"
|
||||||
|
image = upload_image_to_alibaba(image_data, filename)
|
||||||
|
image_data = image
|
||||||
|
request.data['image_url'] = image_data
|
||||||
|
serializer = DefaultTaskImagesSerializer(data=request.data)
|
||||||
|
if serializer.is_valid():
|
||||||
|
serializer.save()
|
||||||
|
return custom_response(None, serializer.data, response_status=status.HTTP_200_OK)
|
||||||
|
return custom_error_response(serializer.error, response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
class DefaultImageAPIViewSet(viewsets.ModelViewSet):
|
||||||
|
"""Profile viewset"""
|
||||||
|
queryset = DefaultTaskImages.objects.all()
|
||||||
|
serializer_class = DefaultTaskImagesDetailsSerializer
|
||||||
|
def list(self, request, *args, **kwargs):
|
||||||
|
"""profile view"""
|
||||||
|
queryset = DefaultTaskImages.objects.all()
|
||||||
|
serializer = DefaultTaskImagesSerializer(queryset, many=True)
|
||||||
|
return custom_response(None, serializer.data, response_status=status.HTTP_200_OK)
|
||||||
|
@ -38,9 +38,11 @@ class UserSerializer(serializers.ModelSerializer):
|
|||||||
user = User.objects.create_user(username=email, email=email, password=password)
|
user = User.objects.create_user(username=email, email=email, password=password)
|
||||||
UserProfile.objects.create(user=user, user_type=user_type)
|
UserProfile.objects.create(user=user, user_type=user_type)
|
||||||
if user_type == '1':
|
if user_type == '1':
|
||||||
Junior.objects.create(auth=user)
|
Junior.objects.create(auth=user, junior_code=''.join([str(random.randrange(9)) for _ in range(6)]),
|
||||||
|
referral_code=''.join([str(random.randrange(9)) for _ in range(6)]))
|
||||||
if user_type == '2':
|
if user_type == '2':
|
||||||
Guardian.objects.create(user=user)
|
Guardian.objects.create(user=user, guardian_code=''.join([str(random.randrange(9)) for _ in range(6)]),
|
||||||
|
referral_code=''.join([str(random.randrange(9)) for _ in range(6)]))
|
||||||
return user
|
return user
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
"""Error handling"""
|
"""Error handling"""
|
||||||
@ -88,11 +90,6 @@ class CreateGuardianSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
"""Create guardian profile"""
|
"""Create guardian profile"""
|
||||||
# phone_number = validated_data.get('phone', None)
|
|
||||||
# guardian_data = Guardian.objects.filter(phone=phone_number)
|
|
||||||
# junior_data = Junior.objects.filter(phone=phone_number)
|
|
||||||
# if phone_number and (guardian_data or junior_data):
|
|
||||||
# raise serializers.ValidationError({"details": ERROR_CODE['2012']})
|
|
||||||
user = User.objects.filter(username=self.context['user']).last()
|
user = User.objects.filter(username=self.context['user']).last()
|
||||||
if user:
|
if user:
|
||||||
"""Save first and last name of guardian"""
|
"""Save first and last name of guardian"""
|
||||||
@ -176,7 +173,7 @@ class GuardianDetailSerializer(serializers.ModelSerializer):
|
|||||||
'updated_at']
|
'updated_at']
|
||||||
class TaskDetailsSerializer(serializers.ModelSerializer):
|
class TaskDetailsSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
guardian = GuardianDetailSerializer()
|
# guardian = GuardianDetailSerializer()
|
||||||
junior = JuniorDetailSerializer()
|
junior = JuniorDetailSerializer()
|
||||||
class Meta(object):
|
class Meta(object):
|
||||||
model = JuniorTask
|
model = JuniorTask
|
||||||
@ -216,3 +213,27 @@ class TopJuniorSerializer(serializers.ModelSerializer):
|
|||||||
return item['total_points']
|
return item['total_points']
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
class GuardianProfileSerializer(serializers.ModelSerializer):
|
||||||
|
"""junior serializer"""
|
||||||
|
|
||||||
|
email = serializers.SerializerMethodField('get_auth')
|
||||||
|
first_name = serializers.SerializerMethodField('get_first_name')
|
||||||
|
last_name = serializers.SerializerMethodField('get_last_name')
|
||||||
|
|
||||||
|
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 = ['id', 'email', 'first_name', 'last_name', 'country_code', 'phone', 'gender', 'dob',
|
||||||
|
'guardian_code', 'referral_code','is_active', 'is_complete_profile', 'created_at', 'image',
|
||||||
|
'updated_at']
|
@ -22,6 +22,7 @@ from django.db.models import Sum
|
|||||||
# Create your views here.
|
# Create your views here.
|
||||||
class SignupViewset(viewsets.ModelViewSet):
|
class SignupViewset(viewsets.ModelViewSet):
|
||||||
"""Signup view set"""
|
"""Signup view set"""
|
||||||
|
queryset = User.objects.all()
|
||||||
serializer_class = UserSerializer
|
serializer_class = UserSerializer
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
"""Create user profile"""
|
"""Create user profile"""
|
||||||
@ -44,6 +45,7 @@ class SignupViewset(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
class UpdateGuardianProfile(viewsets.ViewSet):
|
class UpdateGuardianProfile(viewsets.ViewSet):
|
||||||
"""Update guardian profile"""
|
"""Update guardian profile"""
|
||||||
|
queryset = Guardian.objects.all()
|
||||||
serializer_class = CreateGuardianSerializer
|
serializer_class = CreateGuardianSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
|
||||||
@ -63,6 +65,7 @@ class UpdateGuardianProfile(viewsets.ViewSet):
|
|||||||
class AllTaskListAPIView(viewsets.ModelViewSet):
|
class AllTaskListAPIView(viewsets.ModelViewSet):
|
||||||
"""Update guardian profile"""
|
"""Update guardian profile"""
|
||||||
serializer_class = TaskDetailsSerializer
|
serializer_class = TaskDetailsSerializer
|
||||||
|
queryset = JuniorTask.objects.all()
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
@ -76,6 +79,7 @@ class TaskListAPIView(viewsets.ModelViewSet):
|
|||||||
serializer_class = TaskDetailsSerializer
|
serializer_class = TaskDetailsSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
pagination_class = PageNumberPagination
|
pagination_class = PageNumberPagination
|
||||||
|
queryset = JuniorTask.objects.all()
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
"""Create guardian profile"""
|
"""Create guardian profile"""
|
||||||
@ -93,6 +97,7 @@ class TaskListAPIView(viewsets.ModelViewSet):
|
|||||||
class CreateTaskAPIView(viewsets.ModelViewSet):
|
class CreateTaskAPIView(viewsets.ModelViewSet):
|
||||||
"""create task for junior"""
|
"""create task for junior"""
|
||||||
serializer_class = TaskSerializer
|
serializer_class = TaskSerializer
|
||||||
|
queryset = JuniorTask.objects.all()
|
||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
image = request.data['default_image']
|
image = request.data['default_image']
|
||||||
@ -103,7 +108,6 @@ class CreateTaskAPIView(viewsets.ModelViewSet):
|
|||||||
filename = f"images/{image}"
|
filename = f"images/{image}"
|
||||||
image_url = upload_image_to_alibaba(image, filename)
|
image_url = upload_image_to_alibaba(image, filename)
|
||||||
image_data = image_url
|
image_data = image_url
|
||||||
data.pop('default_image')
|
|
||||||
serializer = TaskSerializer(context={"user":request.user, "image":image_data}, data=data)
|
serializer = TaskSerializer(context={"user":request.user, "image":image_data}, data=data)
|
||||||
if serializer.is_valid():
|
if serializer.is_valid():
|
||||||
serializer.save()
|
serializer.save()
|
||||||
@ -115,6 +119,7 @@ class SearchTaskListAPIView(viewsets.ModelViewSet):
|
|||||||
serializer_class = TaskDetailsSerializer
|
serializer_class = TaskDetailsSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
pagination_class = PageNumberPagination
|
pagination_class = PageNumberPagination
|
||||||
|
queryset = JuniorTask.objects.all()
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
"""Get the queryset for the view"""
|
"""Get the queryset for the view"""
|
||||||
@ -136,8 +141,8 @@ class SearchTaskListAPIView(viewsets.ModelViewSet):
|
|||||||
class TopJuniorListAPIView(viewsets.ModelViewSet):
|
class TopJuniorListAPIView(viewsets.ModelViewSet):
|
||||||
"""Top juniors list"""
|
"""Top juniors list"""
|
||||||
serializer_class = TopJuniorSerializer
|
serializer_class = TopJuniorSerializer
|
||||||
# permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
queryset = JuniorTask.objects.all()
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
"""fetch junior list those complete their task"""
|
"""fetch junior list those complete their task"""
|
||||||
junior_ids_with_total_points = JuniorTask.objects.filter(task_status=1) \
|
junior_ids_with_total_points = JuniorTask.objects.filter(task_status=1) \
|
||||||
|
@ -192,3 +192,33 @@ class JuniorDetailListSerializer(serializers.ModelSerializer):
|
|||||||
'guardian_code', 'referral_code','is_active', 'is_complete_profile', 'created_at', 'image',
|
'guardian_code', 'referral_code','is_active', 'is_complete_profile', 'created_at', 'image',
|
||||||
'updated_at', 'assigned_task','points', 'pending_task', 'in_progress_task', 'completed_task',
|
'updated_at', 'assigned_task','points', 'pending_task', 'in_progress_task', 'completed_task',
|
||||||
'requested_task', 'rejected_task']
|
'requested_task', 'rejected_task']
|
||||||
|
|
||||||
|
class JuniorProfileSerializer(serializers.ModelSerializer):
|
||||||
|
"""junior serializer"""
|
||||||
|
email = serializers.SerializerMethodField('get_auth')
|
||||||
|
first_name = serializers.SerializerMethodField('get_first_name')
|
||||||
|
last_name = serializers.SerializerMethodField('get_last_name')
|
||||||
|
notification_count = serializers.SerializerMethodField('get_notification_count')
|
||||||
|
|
||||||
|
def get_auth(self, obj):
|
||||||
|
"""user email address"""
|
||||||
|
return obj.auth.username
|
||||||
|
|
||||||
|
def get_first_name(self, obj):
|
||||||
|
"""user first name"""
|
||||||
|
return obj.auth.first_name
|
||||||
|
|
||||||
|
def get_last_name(self, obj):
|
||||||
|
"""user last name"""
|
||||||
|
return obj.auth.last_name
|
||||||
|
|
||||||
|
def get_notification_count(self, obj):
|
||||||
|
"""user email address"""
|
||||||
|
return 0
|
||||||
|
|
||||||
|
class Meta(object):
|
||||||
|
"""Meta info"""
|
||||||
|
model = Junior
|
||||||
|
fields = ['id', 'email', 'first_name', 'last_name', 'country_code', 'phone', 'gender', 'dob',
|
||||||
|
'guardian_code', 'referral_code','is_active', 'is_complete_profile', 'created_at', 'image',
|
||||||
|
'updated_at', 'notification_count']
|
||||||
|
@ -10,6 +10,7 @@ from account.utils import custom_response, custom_error_response
|
|||||||
# Create your views here.
|
# Create your views here.
|
||||||
class UpdateJuniorProfile(viewsets.ViewSet):
|
class UpdateJuniorProfile(viewsets.ViewSet):
|
||||||
"""Update junior profile"""
|
"""Update junior profile"""
|
||||||
|
queryset = Junior.objects.all()
|
||||||
serializer_class = CreateJuniorSerializer
|
serializer_class = CreateJuniorSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
|
||||||
@ -27,6 +28,7 @@ class UpdateJuniorProfile(viewsets.ViewSet):
|
|||||||
|
|
||||||
class ValidateGuardianCode(viewsets.ViewSet):
|
class ValidateGuardianCode(viewsets.ViewSet):
|
||||||
"""Check guardian code exist or not"""
|
"""Check guardian code exist or not"""
|
||||||
|
queryset = Guardian.objects.all()
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
@ -43,7 +45,7 @@ class JuniorListAPIView(viewsets.ModelViewSet):
|
|||||||
"""Junior list of assosicated guardian"""
|
"""Junior list of assosicated guardian"""
|
||||||
|
|
||||||
serializer_class = JuniorDetailListSerializer
|
serializer_class = JuniorDetailListSerializer
|
||||||
|
queryset = Junior.objects.all()
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
""" junior list"""
|
""" junior list"""
|
||||||
guardian_data = Guardian.objects.filter(user__email=request.user).last()
|
guardian_data = Guardian.objects.filter(user__email=request.user).last()
|
||||||
|
Reference in New Issue
Block a user