1212from PyMatcha .utils .match_score import _get_distance
1313from PyMatcha .utils .match_score import _get_gender_query
1414
15+ BASE_HEAT_SCORE = 30
16+ LIKES_MULTIPLIER = 2
17+ SUPERLIKES_MULTIPLIER = 10
18+ MATCHES_MULTIPLIER = 4
19+ REPORTS_MULTIPLIER = 10
20+ VIEW_MULTIPLIER = 1
21+ MESSAGES_DIVIDER = 5
22+
1523
1624@celery .on_after_configure .connect
1725def setup_periodic_tasks (sender , ** kwargs ):
@@ -23,7 +31,9 @@ def setup_periodic_tasks(sender, **kwargs):
2331@celery .task
2432def update_heat_scores ():
2533 for user in User .select_all ():
26- likes_received = len (user .get_likes_received ())
34+ likes = [like .is_superlike for like in user .get_likes_received ()]
35+ likes_received = likes .count (False )
36+ superlikes_received = likes .count (True )
2737 reports_received = len (user .get_reports_received ())
2838 views = len (user .get_views ())
2939 matches = len (user .get_matches ())
@@ -32,14 +42,15 @@ def update_heat_scores():
3242 except ValueError :
3343 messages = 0
3444
35- score = 30
45+ score = BASE_HEAT_SCORE
3646 if user .username == "seluj78" or user .username == "tet" :
3747 score += 100
38- score += likes_received * 2
39- score += matches * 4
40- score -= reports_received * 10
41- score += views
42- score += ceil (messages / 5 )
48+ score += likes_received * LIKES_MULTIPLIER
49+ score += superlikes_received * SUPERLIKES_MULTIPLIER
50+ score += matches * MATCHES_MULTIPLIER
51+ score -= reports_received * REPORTS_MULTIPLIER
52+ score += views * VIEW_MULTIPLIER
53+ score += ceil (messages / MESSAGES_DIVIDER )
4354 user .heat_score = score
4455 user .save ()
4556 return f"Updated heat score for user { user .id } : { user .heat_score } ."
0 commit comments