Skip to content

Commit 0c83930

Browse files
authored
Merge pull request #2391 from gtech-mulearn/dev
Dev Server
2 parents 38c8372 + 0b8974c commit 0c83930

File tree

4 files changed

+98
-25
lines changed

4 files changed

+98
-25
lines changed

api/dashboard/learningcircle/learningcircle_views.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,7 @@ def get(self, request):
526526
class LearningCircleMeetingListAPI(APIView):
527527

528528
def get(self, request):
529+
529530
request_data = request.query_params
530531
category = request_data.get("category", None)
531532
saved = request_data.get("saved", "0")

api/leaderboard/leaderboard_view.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ def get(self, request):
1515
students_leaderboard = (
1616
User.objects.prefetch_related(
1717
"user_role_link_user__role",
18-
"user_organization_link_user__org",
1918
)
2019
.filter(
2120
user_organization_link_user__org__org_type=OrganizationType.COLLEGE.value,
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from django.core.management.base import BaseCommand
2+
from typing import Any, Optional
3+
from db.achievement import Achievement, UserAchievements
4+
5+
from db.user import User
6+
7+
8+
class Command(BaseCommand):
9+
10+
help = "Comamnd to generate achievements for users"
11+
12+
def add_arguments(self, parser):
13+
pass
14+
15+
def handle(self, *args: Any, **options: Any) -> Optional[str]:
16+
users = User.objects.select_related("user_lvl_link_user__level").filter()
17+
levels = {}
18+
19+
for i in range(1, 7):
20+
levels[i] = Achievement.objects.get(level__level_order=i)
21+
22+
for user in users:
23+
try:
24+
level_link = user.user_lvl_link_user
25+
except:
26+
continue
27+
if not level_link:
28+
continue
29+
level = level_link.level
30+
level_order = level.level_order
31+
for i in range(1, level_order + 1):
32+
achievement = levels[i]
33+
UserAchievements.objects.create(
34+
user_id=user, achievement_id=achievement
35+
)
36+
print(
37+
"Achievements generated for user: ", user.muid, "Level: ", level_order
38+
)

db/achievement.py

Lines changed: 59 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,72 @@
22
import uuid
33
from db.user import User
44

5+
56
class Achievement(models.Model):
6-
id = models.CharField(primary_key=True, default=uuid.uuid4, max_length=36)
7-
name = models.CharField(max_length=75, unique=True)
8-
level_id = models.ForeignKey('Level', on_delete=models.CASCADE, db_column='level_id')
9-
description = models.CharField(max_length=300)
10-
icon = models.CharField(max_length=100)
11-
has_vc = models.BooleanField()
12-
tags = models.JSONField()
13-
type = models.CharField(max_length=36)
14-
template_id = models.CharField(max_length=100, null=True, blank=True)
15-
updated_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name='achievements_updated_by', db_column='updated_by')
16-
updated_at = models.DateTimeField(auto_now=True)
17-
created_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name='achievements_created_by', db_column='created_by')
18-
created_at = models.DateTimeField(auto_now_add=True)
7+
id = models.CharField(primary_key=True, default=uuid.uuid4, max_length=36)
8+
name = models.CharField(max_length=75, unique=True)
9+
level_id = models.ForeignKey(
10+
"Level", on_delete=models.CASCADE, db_column="level_id"
11+
)
12+
description = models.CharField(max_length=300)
13+
icon = models.CharField(max_length=100)
14+
has_vc = models.BooleanField()
15+
tags = models.JSONField()
16+
type = models.CharField(max_length=36)
17+
template_id = models.CharField(max_length=100, null=True, blank=True)
18+
updated_by = models.ForeignKey(
19+
User,
20+
on_delete=models.CASCADE,
21+
related_name="achievements_updated_by",
22+
db_column="updated_by",
23+
)
24+
updated_at = models.DateTimeField(auto_now=True)
25+
created_by = models.ForeignKey(
26+
User,
27+
on_delete=models.CASCADE,
28+
related_name="achievements_created_by",
29+
db_column="created_by",
30+
)
31+
created_at = models.DateTimeField(auto_now_add=True)
1932

2033
class Meta:
21-
db_table = 'achievement'
34+
db_table = "achievement"
2235
managed = False
2336

2437

2538
class UserAchievementsLog(models.Model):
26-
id = models.CharField(primary_key=True, default=uuid.uuid4, max_length=36)
27-
user_id = models.ForeignKey('User', on_delete=models.CASCADE, related_name='achievements', db_column='user_id', db_index=True)
28-
achievement_id = models.ForeignKey('Achievement', on_delete=models.CASCADE, related_name='users', db_column='achievement_id', db_index=True)
29-
is_issued = models.BooleanField(default=False)
30-
vc_url = models.CharField(max_length=100)
31-
updated_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user-achievements_updated_by',db_column='updated_by')
32-
updated_at = models.DateTimeField(auto_now=True)
33-
created_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user-achievements_created_by',db_column='created_by')
34-
created_at = models.DateTimeField(auto_now_add=True)
39+
id = models.CharField(primary_key=True, default=uuid.uuid4, max_length=36)
40+
user_id = models.ForeignKey(
41+
"User",
42+
on_delete=models.CASCADE,
43+
related_name="achievements",
44+
db_column="user_id",
45+
db_index=True,
46+
)
47+
achievement_id = models.ForeignKey(
48+
"Achievement",
49+
on_delete=models.CASCADE,
50+
related_name="users",
51+
db_column="achievement_id",
52+
db_index=True,
53+
)
54+
is_issued = models.BooleanField(default=False)
55+
vc_url = models.CharField(max_length=100)
56+
updated_by = models.ForeignKey(
57+
User,
58+
on_delete=models.CASCADE,
59+
related_name="user_achievements_updated_by",
60+
db_column="updated_by",
61+
)
62+
updated_at = models.DateTimeField(auto_now=True)
63+
created_by = models.ForeignKey(
64+
User,
65+
on_delete=models.CASCADE,
66+
related_name="user_achievements_created_by",
67+
db_column="created_by",
68+
)
69+
created_at = models.DateTimeField(auto_now_add=True)
3570

3671
class Meta:
37-
db_table = 'user_achievements_log'
72+
db_table = "user_achievements_log"
3873
managed = False

0 commit comments

Comments
 (0)