@@ -32,38 +32,19 @@ def get_rank(self, obj):
32
32
).values ('user' ).annotate (
33
33
total_karma = Sum ('karma' )
34
34
).values ('total_karma' )
35
- allowed_org_types = ["College" , "School" , "Company" ]
36
35
37
36
intro_task_completed_users = KarmaActivityLog .objects .filter (
38
37
task__event = 'launchpad' ,
39
38
appraiser_approved = True ,
40
39
task__hashtag = '#lp24-introduction' ,
41
40
).values ('user' )
42
41
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
-
58
42
users = User .objects .filter (
59
43
karma_activity_log_user__task__event = "launchpad" ,
60
44
karma_activity_log_user__appraiser_approved = True ,
61
45
id__in = intro_task_completed_users
62
46
).annotate (
63
47
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 ),
67
48
time_ = Max ("karma_activity_log_user__created_at" ),
68
49
).order_by ("-karma" , "time_" )
69
50
@@ -77,7 +58,7 @@ def get_rank(self, obj):
77
58
return rank
78
59
79
60
class LaunchpadLeaderBoardSerializer (serializers .ModelSerializer ):
80
- rank = serializers .SerializerMethodField ()
61
+ rank = serializers .IntegerField ()
81
62
karma = serializers .IntegerField ()
82
63
actual_karma = serializers .IntegerField (source = "wallet_user.karma" , default = None )
83
64
org = serializers .CharField (allow_null = True , allow_blank = True )
@@ -88,68 +69,21 @@ class LaunchpadLeaderBoardSerializer(serializers.ModelSerializer):
88
69
class Meta :
89
70
model = User
90
71
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_" )
134
72
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
+
143
74
144
75
class TaskCompletedLeaderBoardSerializer (serializers .ModelSerializer ):
145
76
rank = serializers .IntegerField ()
146
77
karma = serializers .IntegerField ()
147
78
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 )
148
82
149
83
class Meta :
150
84
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
+
153
87
154
88
class LaunchpadParticipantsSerializer (serializers .ModelSerializer ):
155
89
org = serializers .CharField (allow_null = True , allow_blank = True )
0 commit comments