Skip to content

Commit 7ae7e5d

Browse files
committed
Add CurrentUserPrograms view
1 parent a9573eb commit 7ae7e5d

3 files changed

Lines changed: 29 additions & 0 deletions

File tree

partner_programs/serializers.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,13 @@ class PartnerProgramUserSerializer(serializers.Serializer):
126126

127127
class PartnerProgramDataSchemaSerializer(serializers.Serializer):
128128
data_schema = serializers.JSONField(required=True)
129+
130+
131+
class UserProgramsSerializer(serializers.ModelSerializer):
132+
class Meta:
133+
model = PartnerProgram
134+
fields = [
135+
"id",
136+
"name",
137+
"tag",
138+
]

users/urls.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
RegisteredEventsList,
1919
SetUserOnboardingStage,
2020
ResendVerifyEmail,
21+
CurrentUserPrograms,
2122
)
2223

2324
app_name = "users"
@@ -35,6 +36,7 @@
3536
path("users/<int:pk>/set_onboarding_stage/", SetUserOnboardingStage.as_view()),
3637
path("users/reset-password/", EmailResetPassword.as_view()),
3738
path("users/current/", CurrentUser.as_view()),
39+
path("users/current/programs/", CurrentUserPrograms.as_view()),
3840
path("users/current/events/", RegisteredEventsList.as_view()),
3941
path("users/achievements/", AchievementList.as_view()),
4042
path("users/achievements/<int:pk>/", AchievementDetail.as_view()),

users/views.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
ListCreateAPIView,
1616
RetrieveUpdateDestroyAPIView,
1717
UpdateAPIView,
18+
RetrieveAPIView,
1819
)
1920
from rest_framework.permissions import AllowAny, IsAuthenticated
2021
from rest_framework.request import Request
@@ -25,6 +26,8 @@
2526
from core.permissions import IsOwnerOrReadOnly
2627
from events.models import Event
2728
from events.serializers import EventsListSerializer
29+
from partner_programs.models import PartnerProgram
30+
from partner_programs.serializers import UserProgramsSerializer
2831
from projects.serializers import ProjectListSerializer
2932
from users.helpers import (
3033
reset_email,
@@ -126,6 +129,20 @@ def patch(self, request, pk):
126129
return super().patch(request, pk)
127130

128131

132+
class CurrentUserPrograms(RetrieveAPIView):
133+
queryset = PartnerProgram.objects.all()
134+
permission_classes = [IsAuthenticated]
135+
serializer_class = UserProgramsSerializer
136+
137+
def get(self, request, *args, **kwargs):
138+
user = User.objects.get(id=request.user.id)
139+
programs = [
140+
profile.partner_program for profile in user.partner_program_profiles.all()
141+
]
142+
serializer = self.get_serializer(programs, many=True)
143+
return Response(serializer.data, status=status.HTTP_200_OK)
144+
145+
129146
class CurrentUser(GenericAPIView):
130147
queryset = User.objects.get_users_for_detail_view()
131148
permission_classes = [IsAuthenticated]

0 commit comments

Comments
 (0)