|
15 | 15 | from django.utils.timezone import now
|
16 | 16 |
|
17 | 17 | from db.organization import UserOrganizationLink
|
18 |
| -from db.task import InterestGroup, KarmaActivityLog, Level, UserIgLink |
| 18 | +from db.task import InterestGroup, KarmaActivityLog, Level, UserIgLink, UserLvlLink |
19 | 19 | from db.user import Role, Socials, User, UserRoleLink, UserSettings
|
20 | 20 | from utils.permission import CustomizePermission, JWTUtils
|
21 | 21 | from utils.response import CustomResponse
|
@@ -608,3 +608,34 @@ def get(self, request):
|
608 | 608 | pass
|
609 | 609 |
|
610 | 610 | return CustomResponse(response=response).get_success_response()
|
| 611 | + |
| 612 | + |
| 613 | +class UserLevelFeedAPI(APIView): |
| 614 | + permission_classes = [CustomizePermission] |
| 615 | + |
| 616 | + def get(self, request): |
| 617 | + user_id = JWTUtils.fetch_user_id(request) |
| 618 | + user_level = ( |
| 619 | + UserLvlLink.objects.select_related("level") |
| 620 | + .filter(user_id=user_id) |
| 621 | + .values("level_id", "level__level_order", "level__name", "level__karma") |
| 622 | + .order_by("-created_at") |
| 623 | + .first() |
| 624 | + ) |
| 625 | + user_karma = ( |
| 626 | + KarmaActivityLog.objects.filter( |
| 627 | + user_id=user_id, |
| 628 | + appraiser_approved=True, |
| 629 | + task__level_id=user_level.get("level_id"), |
| 630 | + ) |
| 631 | + .annotate(total_karma=Sum("karma")) |
| 632 | + .values_list("total_karma", flat=True) |
| 633 | + .first() |
| 634 | + ) |
| 635 | + return CustomResponse( |
| 636 | + response={ |
| 637 | + "level_order": user_level.get("level__level_order"), |
| 638 | + "level_karma": user_level.get("level__name"), |
| 639 | + "user_karma": user_karma, |
| 640 | + } |
| 641 | + ).get_success_response() |
0 commit comments