Skip to content

Commit 2a17c7b

Browse files
committed
Updated heat score calculation
1 parent 9222102 commit 2a17c7b

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

backend/PyMatcha/utils/tasks.py

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,44 @@
11
import datetime
2+
import json
23
import logging
4+
from math import ceil
35

46
from PyMatcha import celery
57
from PyMatcha import redis
8+
from PyMatcha.models.message import Message
69
from PyMatcha.models.user import User
10+
from PyMatcha.utils.match_score import _get_age_diff
11+
from PyMatcha.utils.match_score import _get_common_tags
12+
from PyMatcha.utils.match_score import _get_distance
13+
from PyMatcha.utils.match_score import _get_inverted_gender
714

815

916
@celery.on_after_configure.connect
1017
def setup_periodic_tasks(sender, **kwargs):
1118
sender.add_periodic_task(60, update_offline_users.s(), name="Update online users every minute")
12-
sender.add_periodic_task(3600, update_popularity_scores.s(), name="Update popularity scores every minute")
19+
sender.add_periodic_task(3600, update_heat_scores.s(), name="Update heat scores every hour")
1320

1421

1522
@celery.task
16-
def update_popularity_scores():
17-
# TODO: If user is Jules or Guilhem: +100 score
18-
23+
def update_heat_scores():
1924
for user in User.select_all():
2025
likes_received = len(user.get_likes_received())
2126
reports_received = len(user.get_reports_received())
2227
views = len(user.get_views())
28+
matches = len(user.get_matches())
29+
messages = len(Message.get_multi(to_id=user.id))
2330

24-
# TODO: Add matches
25-
# TODO: Add messages
26-
27-
points = 30
28-
points += likes_received * 2
31+
score = 30
32+
if user.username == "seluj78" or user.username == "tet":
33+
score += 100
34+
score += likes_received * 2
35+
score += matches * 4
2936
# TODO: Superlike received = 5 pts
30-
points -= reports_received * 10
31-
points += views
32-
# TODO: remove 5 pts per week of inactivity
33-
user.heat_score = points
37+
score -= reports_received * 10
38+
score += views
39+
score += ceil(messages / 5)
40+
# TODO: remove 10 pts per week of inactivity
41+
user.heat_score = score
3442
user.save()
3543
return f"Updated heat score for user {user.id}: {user.heat_score}."
3644

0 commit comments

Comments
 (0)