Skip to content

Commit ceba6b2

Browse files
Merge pull request #2192 from gtech-mulearn/dev
Dev
2 parents ccce91f + 7f58722 commit ceba6b2

File tree

2 files changed

+31
-73
lines changed

2 files changed

+31
-73
lines changed

api/launchpad/launchpad_views.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ def get(self, request):
6464
time_=Max("karma_activity_log_user__created_at"),
6565
).order_by("-karma", "time_")
6666

67+
rank_list = list(users)
68+
for index, user in enumerate(rank_list):
69+
user.rank = index + 1
70+
6771
paginated_queryset = CommonUtils.get_paginated_queryset(
6872
users,
6973
request,
@@ -89,8 +93,25 @@ def get(self, request):
8993
completed_tasks=Count('task', distinct=True)
9094
).filter(completed_tasks=launchpad_tasks.count())
9195

96+
allowed_org_types = ["College", "School", "Company"]
97+
9298
completed_users = completed_tasks_counts.values('user')
9399

100+
latest_org_link = UserOrganizationLink.objects.filter(
101+
user=OuterRef('id'),
102+
org__org_type__in=allowed_org_types
103+
).order_by('-created_at').values('org__title')[:1]
104+
105+
latest_district = UserOrganizationLink.objects.filter(
106+
user=OuterRef('id'),
107+
org__org_type__in=allowed_org_types
108+
).order_by('-created_at').values('org__district__name')[:1]
109+
110+
latest_state = UserOrganizationLink.objects.filter(
111+
user=OuterRef('id'),
112+
org__org_type__in=allowed_org_types
113+
).order_by('-created_at').values('org__district__zone__state__name')[:1]
114+
94115
wallet_subquery = Wallet.objects.filter(
95116
user=OuterRef('id')
96117
).values('karma')[:1]
@@ -101,6 +122,9 @@ def get(self, request):
101122
id__in=completed_users
102123
).annotate(
103124
karma=Subquery(wallet_subquery,output_field=IntegerField()),
125+
org=Subquery(latest_org_link),
126+
district_name=Subquery(latest_district),
127+
state=Subquery(latest_state),
104128
time_=Max("karma_activity_log_user__created_at"),
105129
).order_by("-karma", "time_")
106130

api/launchpad/serializers.py

Lines changed: 7 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -32,38 +32,19 @@ def get_rank(self, obj):
3232
).values('user').annotate(
3333
total_karma=Sum('karma')
3434
).values('total_karma')
35-
allowed_org_types = ["College", "School", "Company"]
3635

3736
intro_task_completed_users = KarmaActivityLog.objects.filter(
3837
task__event='launchpad',
3938
appraiser_approved=True,
4039
task__hashtag='#lp24-introduction',
4140
).values('user')
4241

43-
latest_org_link = UserOrganizationLink.objects.filter(
44-
user=OuterRef('id'),
45-
org__org_type__in=allowed_org_types
46-
).order_by('-created_at').values('org__title')[:1]
47-
48-
latest_district = UserOrganizationLink.objects.filter(
49-
user=OuterRef('id'),
50-
org__org_type__in=allowed_org_types
51-
).order_by('-created_at').values('org__district__name')[:1]
52-
53-
latest_state = UserOrganizationLink.objects.filter(
54-
user=OuterRef('id'),
55-
org__org_type__in=allowed_org_types
56-
).order_by('-created_at').values('org__district__zone__state__name')[:1]
57-
5842
users = User.objects.filter(
5943
karma_activity_log_user__task__event="launchpad",
6044
karma_activity_log_user__appraiser_approved=True,
6145
id__in=intro_task_completed_users
6246
).annotate(
6347
karma=Subquery(total_karma_subquery, output_field=IntegerField()),
64-
org=Subquery(latest_org_link),
65-
district_name=Subquery(latest_district),
66-
state=Subquery(latest_state),
6748
time_=Max("karma_activity_log_user__created_at"),
6849
).order_by("-karma", "time_")
6950

@@ -77,7 +58,7 @@ def get_rank(self, obj):
7758
return rank
7859

7960
class LaunchpadLeaderBoardSerializer(serializers.ModelSerializer):
80-
rank = serializers.SerializerMethodField()
61+
rank = serializers.IntegerField()
8162
karma = serializers.IntegerField()
8263
actual_karma = serializers.IntegerField(source="wallet_user.karma", default=None)
8364
org = serializers.CharField(allow_null=True, allow_blank=True)
@@ -88,68 +69,21 @@ class LaunchpadLeaderBoardSerializer(serializers.ModelSerializer):
8869
class Meta:
8970
model = User
9071
fields = ("rank", "full_name", "actual_karma", "karma", "org", "district_name", "state","launchpad_id")
91-
92-
def get_rank(self, obj):
93-
total_karma_subquery = KarmaActivityLog.objects.filter(
94-
user=OuterRef('id'),
95-
task__event='launchpad',
96-
appraiser_approved=True,
97-
).values('user').annotate(
98-
total_karma=Sum('karma')
99-
).values('total_karma')
100-
allowed_org_types = ["College", "School", "Company"]
101-
102-
intro_task_completed_users = KarmaActivityLog.objects.filter(
103-
task__event='launchpad',
104-
appraiser_approved=True,
105-
task__hashtag='#lp24-introduction',
106-
).values('user')
107-
108-
latest_org_link = UserOrganizationLink.objects.filter(
109-
user=OuterRef('id'),
110-
org__org_type__in=allowed_org_types
111-
).order_by('-created_at').values('org__title')[:1]
112-
113-
latest_district = UserOrganizationLink.objects.filter(
114-
user=OuterRef('id'),
115-
org__org_type__in=allowed_org_types
116-
).order_by('-created_at').values('org__district__name')[:1]
117-
118-
latest_state = UserOrganizationLink.objects.filter(
119-
user=OuterRef('id'),
120-
org__org_type__in=allowed_org_types
121-
).order_by('-created_at').values('org__district__zone__state__name')[:1]
122-
123-
users = User.objects.filter(
124-
karma_activity_log_user__task__event="launchpad",
125-
karma_activity_log_user__appraiser_approved=True,
126-
id__in=intro_task_completed_users
127-
).annotate(
128-
karma=Subquery(total_karma_subquery, output_field=IntegerField()),
129-
org=Subquery(latest_org_link),
130-
district_name=Subquery(latest_district),
131-
state=Subquery(latest_state),
132-
time_=Max("karma_activity_log_user__created_at"),
133-
).order_by("-karma", "time_")
13472

135-
# high complexity
136-
rank = 0
137-
for data in users:
138-
rank += 1
139-
if data.id == obj.id:
140-
break
141-
142-
return rank
73+
14374

14475
class TaskCompletedLeaderBoardSerializer(serializers.ModelSerializer):
14576
rank = serializers.IntegerField()
14677
karma = serializers.IntegerField()
14778
is_public = serializers.BooleanField(source='user_settings_user.is_public',default=False)
79+
org = serializers.CharField(allow_null=True, allow_blank=True)
80+
district_name = serializers.CharField(allow_null=True, allow_blank=True)
81+
state = serializers.CharField(allow_null=True, allow_blank=True)
14882

14983
class Meta:
15084
model = User
151-
fields = ("muid", "is_public", "rank", "full_name", "karma")
152-
85+
fields = ("muid", "is_public", "rank", "full_name", "karma", "org", "district_name", "state", "profile_pic")
86+
15387

15488
class LaunchpadParticipantsSerializer(serializers.ModelSerializer):
15589
org = serializers.CharField(allow_null=True, allow_blank=True)

0 commit comments

Comments
 (0)