Skip to content

Commit

Permalink
Merge pull request #2058 from gtech-mulearn/dev
Browse files Browse the repository at this point in the history
Merge dev to dev-server
  • Loading branch information
jelanmathewjames authored Jun 15, 2024
2 parents 624eae3 + c1cba9c commit 1c3db38
Showing 1 changed file with 46 additions and 2 deletions.
48 changes: 46 additions & 2 deletions api/launchpad/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@


class LaunchpadLeaderBoardSerializer(serializers.ModelSerializer):
rank = serializers.IntegerField()
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()
Expand All @@ -14,6 +15,49 @@ class Meta:
model = User
fields = ("rank", "full_name", "karma", "org", "district_name", "state")

def get_rank(self, obj):
total_karma_subquery = KarmaActivityLog.objects.filter(
user=OuterRef('id'),
task__event='launchpad',
appraiser_approved=True,
).values('user').annotate(
total_karma=Sum('karma')
).values('total_karma')
allowed_org_types = ["College", "School", "Company"]

intro_task_completed_users = KarmaActivityLog.objects.filter(
task__event='launchpad',
appraiser_approved=True,
task__hashtag='#lp24-introduction',
).values('user')

users = User.objects.filter(
karma_activity_log_user__task__event="launchpad",
karma_activity_log_user__appraiser_approved=True,
id__in=intro_task_completed_users
).prefetch_related(
Prefetch(
"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()),
time_=Max("karma_activity_log_user__created_at"),
).order_by("-karma", "time_")

# high complexity
rank = 0
for data in users:
rank += 1
if data.id == obj.id:
break

return rank


class LaunchpadParticipantsSerializer(serializers.ModelSerializer):
org = serializers.CharField()
Expand All @@ -23,4 +67,4 @@ class LaunchpadParticipantsSerializer(serializers.ModelSerializer):

class Meta:
model = User
fields = ("full_name", "level", "org", "district_name", "state")
fields = ("full_name", "level", "org", "district_name", "state")

0 comments on commit 1c3db38

Please sign in to comment.