changes in task list API and add special character in password for added junior

This commit is contained in:
jain
2023-09-04 15:02:47 +05:30
parent 7b75a3233c
commit 20fa6e43da
4 changed files with 48 additions and 10 deletions

View File

@ -1,6 +1,6 @@
"""Account utils"""
from celery import shared_task
import random
"""Import django"""
from django.conf import settings
from rest_framework import viewsets, status
@ -289,3 +289,27 @@ def get_user_full_name(user_obj):
to get user's full name
"""
return f"{user_obj.first_name} {user_obj.last_name}" if user_obj.first_name or user_obj.last_name else "User"
def make_special_password(length=10):
# Define character sets
lowercase_letters = string.ascii_lowercase
uppercase_letters = string.ascii_uppercase
digits = string.digits
special_characters = '!@#$%^&*()_-+=<>?/[]{}|'
# Combine character sets
all_characters = lowercase_letters + uppercase_letters + digits + special_characters
# Create a password with random characters
password = (
random.choice(lowercase_letters) +
random.choice(uppercase_letters) +
random.choice(digits) +
random.choice(special_characters) +
''.join(random.choice(all_characters) for _ in range(length - 4))
)
# Shuffle the characters to make it more random
password_list = list(password)
random.shuffle(password_list)
return ''.join(password_list)

View File

@ -136,7 +136,8 @@ class TaskListAPIView(viewsets.ModelViewSet):
Params
status
search
page"""
page
junior"""
serializer_class = TaskDetailsSerializer
permission_classes = [IsAuthenticated]
filter_backends = (SearchFilter,)
@ -156,9 +157,17 @@ class TaskListAPIView(viewsets.ModelViewSet):
"""Create guardian profile"""
status_value = self.request.GET.get('status')
current_page = self.request.GET.get('page')
junior = self.request.GET.get('junior')
queryset = self.get_queryset()
if status_value and status_value != '0':
queryset = queryset.filter(task_status=status_value)
task_status = ['1']
if str(status_value) == '2':
task_status = ['2', '4']
elif str(status_value) == '3':
task_status = ['3', '5', '6']
if status_value and not junior:
queryset = queryset.filter(task_status__in=task_status)
elif status_value and junior:
queryset = queryset.filter(task_status__in=task_status,junior=int(junior))
paginator = self.pagination_class()
total_count = len(queryset)
total_pages = math.ceil(total_count/10)

View File

@ -11,7 +11,7 @@ from django.utils import timezone
from rest_framework_simplejwt.tokens import RefreshToken
# local imports
from account.utils import send_otp_email, generate_code
from account.utils import send_otp_email, generate_code, make_special_password
from junior.models import Junior, JuniorPoints, JuniorGuardianRelationship, JuniorArticlePoints, FAQ
from guardian.tasks import generate_otp
from base.messages import ERROR_CODE, SUCCESS_CODE
@ -297,8 +297,8 @@ class AddJuniorSerializer(serializers.ModelSerializer):
user_data = User.objects.create(username=email, email=email,
first_name=self.context['first_name'],
last_name=self.context['last_name'])
password = User.objects.make_random_password()
user_data.set_password(password)
special_password = make_special_password()
user_data.set_password(special_password)
user_data.save()
junior_data = Junior.objects.create(auth=user_data, gender=validated_data.get('gender'),
image=profile_image,
@ -321,7 +321,7 @@ class AddJuniorSerializer(serializers.ModelSerializer):
# add push notification
UserNotification.objects.get_or_create(user=user_data)
"""Notification email"""
junior_notification_email.delay(email, full_name, email, password)
junior_notification_email.delay(email, full_name, email, special_password)
# push notification
send_notification.delay(ASSOCIATE_JUNIOR, None, None, junior_data.auth.id, {})
return junior_data

View File

@ -369,8 +369,13 @@ class JuniorTaskListAPIView(viewsets.ModelViewSet):
status_value = self.request.GET.get('status')
current_page = self.request.GET.get('page')
queryset = self.get_queryset()
if status_value and status_value != '0':
queryset = queryset.filter(task_status=status_value)
task_status = ['1']
if str(status_value) == '2':
task_status = ['2', '4']
elif str(status_value) == '3':
task_status = ['3', '5', '6']
if status_value:
queryset = queryset.filter(task_status__in=task_status)
paginator = self.pagination_class()
total_count = len(queryset)
total_pages = math.ceil(total_count / 10)