From 69c19cf09714846ff70232106ab6173b2002ce6a Mon Sep 17 00:00:00 2001 From: abutalib-kiwi Date: Fri, 11 Aug 2023 14:40:49 +0530 Subject: [PATCH] sonar issues --- account/serializers.py | 3 +- account/views.py | 3 +- base/constants.py | 2 ++ guardian/views.py | 32 ----------------- junior/serializers.py | 1 - web_admin/serializers/analytics_serializer.py | 1 - web_admin/views/analytics.py | 34 +++++++++++-------- 7 files changed, 26 insertions(+), 50 deletions(-) diff --git a/account/serializers.py b/account/serializers.py index 4065b5c..edf4de9 100644 --- a/account/serializers.py +++ b/account/serializers.py @@ -152,7 +152,8 @@ class AdminLoginSerializer(serializers.ModelSerializer): def validate(self, attrs): user = User.objects.filter(email__iexact=attrs['email'], is_superuser=True - ).only('id', 'first_name', 'last_name', 'email', 'is_superuser').first() + ).only('id', 'first_name', 'last_name', 'email', + 'username', 'is_active', 'is_superuser').first() if not user or not user.check_password(attrs['password']): raise serializers.ValidationError({'details': ERROR_CODE['2002']}) diff --git a/account/views.py b/account/views.py index fca583b..8c2932d 100644 --- a/account/views.py +++ b/account/views.py @@ -334,7 +334,8 @@ class UserLogin(viewsets.ViewSet): email = request.data.get('email') password = request.data.get('password') user = User.objects.filter(email__iexact=email, is_superuser=True - ).only('id', 'first_name', 'last_name', 'email', 'is_superuser').first() + ).only('id', 'first_name', 'last_name', 'email', + 'username', 'is_active', 'is_superuser').first() if not user or not user.check_password(password): return custom_error_response(ERROR_CODE["2002"], response_status=status.HTTP_400_BAD_REQUEST) diff --git a/base/constants.py b/base/constants.py index 36079b9..05fa8b8 100644 --- a/base/constants.py +++ b/base/constants.py @@ -122,3 +122,5 @@ MAX_ARTICLE_SURVEY = 10 Already_register_user = "duplicate key value violates unique constraint" ARTICLE_CARD_IMAGE_FOLDER = 'article-card-images' + +DATE_FORMAT = '%Y-%m-%d' diff --git a/guardian/views.py b/guardian/views.py index 2194f4b..3948e6f 100644 --- a/guardian/views.py +++ b/guardian/views.py @@ -124,38 +124,6 @@ class AllTaskListAPIView(viewsets.ModelViewSet): serializer = TaskDetailsSerializer(queryset, many=True) return custom_response(None, serializer.data, response_status=status.HTTP_200_OK) -# class TaskListAPIView(viewsets.ModelViewSet): -# """Update guardian profile""" -# serializer_class = TaskDetailsSerializer -# permission_classes = [IsAuthenticated] -# pagination_class = PageNumberPagination -# http_method_names = ('get',) -# -# def list(self, request, *args, **kwargs): -# """Create guardian profile""" -# try: -# status_value = self.request.GET.get('status') -# search = self.request.GET.get('search') -# if search and str(status_value) == '0': -# queryset = JuniorTask.objects.filter(guardian__user=request.user, -# task_name__icontains=search).order_by('due_date', 'created_at') -# elif search and str(status_value) != '0': -# queryset = JuniorTask.objects.filter(guardian__user=request.user,task_name__icontains=search, -# task_status=status_value).order_by('due_date', 'created_at') -# if search is None and str(status_value) == '0': -# queryset = JuniorTask.objects.filter(guardian__user=request.user).order_by('due_date', 'created_at') -# elif search is None and str(status_value) != '0': -# queryset = JuniorTask.objects.filter(guardian__user=request.user, -# task_status=status_value).order_by('due_date','created_at') -# paginator = self.pagination_class() -# # use Pagination -# paginated_queryset = paginator.paginate_queryset(queryset, request) -# # use TaskDetailsSerializer serializer -# serializer = TaskDetailsSerializer(paginated_queryset, many=True) -# return custom_response(None, serializer.data, response_status=status.HTTP_200_OK) -# except Exception as e: -# return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST) - class TaskListAPIView(viewsets.ModelViewSet): """Update guardian profile""" diff --git a/junior/serializers.py b/junior/serializers.py index 57a821b..59fbe07 100644 --- a/junior/serializers.py +++ b/junior/serializers.py @@ -333,7 +333,6 @@ class CompleteTaskSerializer(serializers.ModelSerializer): fields = ('id', 'image') def update(self, instance, validated_data): instance.image = validated_data.get('image', instance.image) - # instance.requested_on = real_time() instance.requested_on = timezone.now().astimezone(pytz.utc) instance.task_status = str(NUMBER['four']) instance.is_approved = False diff --git a/web_admin/serializers/analytics_serializer.py b/web_admin/serializers/analytics_serializer.py index 34316b7..fd85118 100644 --- a/web_admin/serializers/analytics_serializer.py +++ b/web_admin/serializers/analytics_serializer.py @@ -4,7 +4,6 @@ web_admin analytics serializer file from rest_framework import serializers from junior.models import JuniorPoints, Junior -from web_admin.serializers.user_management_serializer import JuniorSerializer class JuniorLeaderboardSerializer(serializers.ModelSerializer): diff --git a/web_admin/views/analytics.py b/web_admin/views/analytics.py index 688e445..0133339 100644 --- a/web_admin/views/analytics.py +++ b/web_admin/views/analytics.py @@ -7,13 +7,13 @@ from rest_framework.viewsets import GenericViewSet from rest_framework.decorators import action from django.contrib.auth import get_user_model from django.db.models import Q -from django.db.models import Count, OuterRef, Subquery, Sum +from django.db.models import Count from django.db.models.functions import TruncDate from django.db.models import F, Window from django.db.models.functions.window import Rank from account.utils import custom_response -from base.constants import PENDING, IN_PROGRESS, REJECTED, REQUESTED, COMPLETED, EXPIRED +from base.constants import PENDING, IN_PROGRESS, REJECTED, REQUESTED, COMPLETED, EXPIRED, DATE_FORMAT from guardian.models import JuniorTask from junior.models import JuniorPoints from web_admin.serializers.analytics_serializer import LeaderboardSerializer @@ -24,6 +24,10 @@ USER = get_user_model() class AnalyticsViewSet(GenericViewSet): """ analytics api view + to get user report (active users, guardians and juniors counts) + to get new user sign up report + to get task report (completed, in-progress, requested and rejected tasks count) + to get junior leaderboard and ranking """ serializer_class = None @@ -41,7 +45,8 @@ class AnalyticsViewSet(GenericViewSet): def total_users_count(self, request, *args, **kwargs): """ api method to get total users, guardians and juniors - :param request: query params {start_date and end_date}, date format (yyyy-mm-dd) + :param request: start_date: date format (yyyy-mm-dd) + :param request: end_date: date format (yyyy-mm-dd) :return: """ @@ -49,8 +54,8 @@ class AnalyticsViewSet(GenericViewSet): start_date = end_date - datetime.timedelta(days=6) if request.query_params.get('start_date') and request.query_params.get('end_date'): - start_date = datetime.datetime.strptime(request.query_params.get('start_date'), '%Y-%m-%d') - end_date = datetime.datetime.strptime(request.query_params.get('end_date'), '%Y-%m-%d') + start_date = datetime.datetime.strptime(request.query_params.get('start_date'), DATE_FORMAT) + end_date = datetime.datetime.strptime(request.query_params.get('end_date'), DATE_FORMAT) user_qs = self.get_queryset() queryset = user_qs.filter(date_joined__range=(start_date, (end_date + datetime.timedelta(days=1)))) @@ -65,15 +70,16 @@ class AnalyticsViewSet(GenericViewSet): def new_signups(self, request, *args, **kwargs): """ api method to get new signups - :param request: query params {start_date and end_date}, date format (yyyy-mm-dd) + :param request: start_date: date format (yyyy-mm-dd) + :param request: end_date: date format (yyyy-mm-dd) :return: """ end_date = datetime.date.today() start_date = end_date - datetime.timedelta(days=6) if request.query_params.get('start_date') and request.query_params.get('end_date'): - start_date = datetime.datetime.strptime(request.query_params.get('start_date'), '%Y-%m-%d') - end_date = datetime.datetime.strptime(request.query_params.get('end_date'), '%Y-%m-%d') + start_date = datetime.datetime.strptime(request.query_params.get('start_date'), DATE_FORMAT) + end_date = datetime.datetime.strptime(request.query_params.get('end_date'), DATE_FORMAT) user_qs = self.get_queryset() signup_data = user_qs.filter(date_joined__range=[start_date, (end_date + datetime.timedelta(days=1))] @@ -85,16 +91,17 @@ class AnalyticsViewSet(GenericViewSet): @action(methods=['get'], url_name='assign-tasks', url_path='assign-tasks', detail=False) def assign_tasks_report(self, request, *args, **kwargs): """ - api method to get assign tasks - :param request: query params {start_date and end_date}, date format (yyyy-mm-dd) + api method to get assign tasks count for (completed, in-progress, requested and rejected) task + :param request: start_date: date format (yyyy-mm-dd) + :param request: end_date: date format (yyyy-mm-dd) :return: """ end_date = datetime.date.today() start_date = end_date - datetime.timedelta(days=6) if request.query_params.get('start_date') and request.query_params.get('end_date'): - start_date = datetime.datetime.strptime(request.query_params.get('start_date'), '%Y-%m-%d') - end_date = datetime.datetime.strptime(request.query_params.get('end_date'), '%Y-%m-%d') + start_date = datetime.datetime.strptime(request.query_params.get('start_date'), DATE_FORMAT) + end_date = datetime.datetime.strptime(request.query_params.get('end_date'), DATE_FORMAT) assign_tasks = JuniorTask.objects.filter( created_at__range=[start_date, (end_date + datetime.timedelta(days=1))] @@ -113,11 +120,10 @@ class AnalyticsViewSet(GenericViewSet): serializer_class=LeaderboardSerializer) def junior_leaderboard(self, request): """ - + to get junior leaderboard and rank :param request: :return: """ - # queryset = JuniorPoints.objects.all().order_by('-total_points', 'junior__created_at') queryset = JuniorPoints.objects.prefetch_related('junior', 'junior__auth').annotate(rank=Window( expression=Rank(), order_by=[F('total_points').desc(), 'junior__created_at']