From ae015a82d98724a574ac41a83618c2fecb747b24 Mon Sep 17 00:00:00 2001 From: jelanmathewjames Date: Thu, 20 Jun 2024 14:55:38 +0530 Subject: [PATCH 1/3] Update launchpad leaderboard --- api/launchpad/launchpad_views.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/api/launchpad/launchpad_views.py b/api/launchpad/launchpad_views.py index a9d755ef..232b3ba9 100644 --- a/api/launchpad/launchpad_views.py +++ b/api/launchpad/launchpad_views.py @@ -42,10 +42,6 @@ def get(self, request): "user_organization_link_user", queryset=UserOrganizationLink.objects.filter(org__org_type__in=allowed_org_types), ) - ).filter( - user_organization_link_user__id__in=UserOrganizationLink.objects.filter( - org__org_type__in=allowed_org_types - ).values("id") ).annotate( karma=Subquery(total_karma_subquery, output_field=IntegerField()), org=F("user_organization_link_user__org__title"), @@ -171,7 +167,7 @@ def get(self, request): class CollegeData(APIView): def get(self, request): allowed_levels = LaunchPadLevels.get_all_values() - + org = Organization.objects.filter( org_type="College", ).prefetch_related( @@ -204,7 +200,7 @@ def get(self, request): filter=Q(user_organization_link_org__user__user_role_link_user__role__title=LaunchPadLevels.LEVEL_4.value) ) ).order_by("-total_users") - + paginated_queryset = CommonUtils.get_paginated_queryset( org, request, From f7365d47b8d98e527880e0e6fb249147c68d2485 Mon Sep 17 00:00:00 2001 From: jelanmathewjames Date: Thu, 20 Jun 2024 15:16:53 +0530 Subject: [PATCH 2/3] refactor: Update Leaderboard APIView to include null user_organization_link_user --- api/launchpad/launchpad_views.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/api/launchpad/launchpad_views.py b/api/launchpad/launchpad_views.py index 232b3ba9..ae06c45f 100644 --- a/api/launchpad/launchpad_views.py +++ b/api/launchpad/launchpad_views.py @@ -42,6 +42,10 @@ def get(self, request): "user_organization_link_user", queryset=UserOrganizationLink.objects.filter(org__org_type__in=allowed_org_types), ) + ).filter( + Q(user_organization_link_user__id__in=UserOrganizationLink.objects.filter( + org__org_type__in=allowed_org_types + ).values("id")) | Q(user_organization_link_user__id__isnull=True) ).annotate( karma=Subquery(total_karma_subquery, output_field=IntegerField()), org=F("user_organization_link_user__org__title"), From c12979ed0b447bc585bdee4b2180652cba840f79 Mon Sep 17 00:00:00 2001 From: jelanmathewjames Date: Thu, 20 Jun 2024 15:34:43 +0530 Subject: [PATCH 3/3] refactor: Update LaunchpadLeaderBoardSerializer to allow null values for org, district_name, and state fields --- api/launchpad/serializers.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/api/launchpad/serializers.py b/api/launchpad/serializers.py index 40545223..b387a487 100644 --- a/api/launchpad/serializers.py +++ b/api/launchpad/serializers.py @@ -1,6 +1,6 @@ import uuid -from django.db.models import Sum, Max, Prefetch, F, OuterRef, Subquery, IntegerField +from django.db.models import Sum, Max, Prefetch, F, OuterRef, Subquery, IntegerField, Q from rest_framework import serializers @@ -16,9 +16,9 @@ class LaunchpadLeaderBoardSerializer(serializers.ModelSerializer): rank = serializers.SerializerMethodField() karma = serializers.IntegerField() actual_karma = serializers.IntegerField(source="wallet_user.karma", default=None) - org = serializers.CharField() - district_name = serializers.CharField() - state = serializers.CharField() + org = serializers.CharField(allow_null=True, allow_blank=True) + district_name = serializers.CharField(allow_null=True, allow_blank=True) + state = serializers.CharField(allow_null=True, allow_blank=True) class Meta: model = User @@ -50,9 +50,9 @@ def get_rank(self, obj): queryset=UserOrganizationLink.objects.filter(org__org_type__in=allowed_org_types), ) ).filter( - user_organization_link_user__id__in=UserOrganizationLink.objects.filter( + Q(user_organization_link_user__id__in=UserOrganizationLink.objects.filter( org__org_type__in=allowed_org_types - ).values("id") + ).values("id")) | Q(user_organization_link_user__id__isnull=True) ).annotate( karma=Subquery(total_karma_subquery, output_field=IntegerField()), time_=Max("karma_activity_log_user__created_at"),