Skip to content

Commit 453df4c

Browse files
authored
Merge pull request #2397 from gtech-mulearn/dev
Dev Server
2 parents b4c1d8c + c64018a commit 453df4c

File tree

1 file changed

+26
-7
lines changed

1 file changed

+26
-7
lines changed

api/management/commands/generate_acheivements.py

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from django.core.management.base import BaseCommand
22
from typing import Any, Optional
3-
from db.achievement import Achievement, UserAchievements
3+
from db.achievement import Achievement, UserAchievementsLog
4+
from django.conf import settings
45

56
from db.user import User
67

@@ -17,9 +18,14 @@ def handle(self, *args: Any, **options: Any) -> Optional[str]:
1718
levels = {}
1819

1920
for i in range(1, 7):
20-
levels[i] = Achievement.objects.get(level__level_order=i)
21+
levels[i] = Achievement.objects.filter(level_id__level_order=i).first()
22+
i = 0
23+
print("started generating achievements")
2124

2225
for user in users:
26+
i += 1
27+
if i % 100 == 0:
28+
print("Processed users: ", i)
2329
try:
2430
level_link = user.user_lvl_link_user
2531
except:
@@ -28,11 +34,24 @@ def handle(self, *args: Any, **options: Any) -> Optional[str]:
2834
continue
2935
level = level_link.level
3036
level_order = level.level_order
37+
38+
batch = []
39+
3140
for i in range(1, level_order + 1):
32-
achievement = levels[i]
33-
UserAchievements.objects.create(
41+
achievement = levels.get(i)
42+
if not achievement:
43+
continue
44+
if UserAchievementsLog.objects.filter(
3445
user_id=user, achievement_id=achievement
46+
).exists():
47+
continue
48+
batch.append(
49+
UserAchievementsLog(
50+
user_id=user,
51+
achievement_id=achievement,
52+
created_by=settings.SYSTEM_ADMIN_ID,
53+
updated_by=settings.SYSTEM_ADMIN_ID,
54+
)
3555
)
36-
print(
37-
"Achievements generated for user: ", user.muid, "Level: ", level_order
38-
)
56+
UserAchievementsLog.objects.bulk_create(batch)
57+
print("added user acheivements for users")

0 commit comments

Comments
 (0)