Skip to content

Commit 3db9129

Browse files
authored
Merge pull request #242 from PROCOLLAB-github/feature/subscribed-projects-list
Отдельная ручка для списков проектов на которые подписан пользователь
2 parents 5e1430a + 9bbca84 commit 3db9129

4 files changed

Lines changed: 25 additions & 3 deletions

File tree

core/pagination.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from rest_framework import pagination
2+
3+
4+
class Pagination(pagination.LimitOffsetPagination):
5+
default_limit = 10
6+
limit_query_param = "limit"
7+
offset_query_param = "offset"

users/serializers.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,6 @@ class UserDetailSerializer(serializers.ModelSerializer):
159159
links = serializers.SerializerMethodField()
160160
is_online = serializers.SerializerMethodField()
161161
projects = serializers.SerializerMethodField()
162-
# inline serializer with fields name, id, image_address, source is self.subscribed_projects
163-
subscribed_projects = UserSubscribedProjectsSerializer(many=True, read_only=True)
164162

165163
def get_projects(self, user: CustomUser):
166164
return UserProjectsSerializer(
@@ -210,7 +208,6 @@ class Meta:
210208
"verification_date",
211209
"onboarding_stage",
212210
"projects",
213-
"subscribed_projects",
214211
]
215212

216213
def update(self, instance, validated_data):

users/urls.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
CurrentUserPrograms,
2121
CurrentUserProgramsTags,
2222
ForceVerifyView,
23+
UserSubscribedProjectsList,
2324
)
2425

2526
app_name = "users"
@@ -34,6 +35,7 @@
3435
path("users/roles/", UserAdditionalRolesView.as_view()),
3536
path("users/types/", UserTypesView.as_view()),
3637
path("users/<int:pk>/", UserDetail.as_view()),
38+
path("users/<int:pk>/subscribed_projects/", UserSubscribedProjectsList.as_view()),
3739
path("users/<int:pk>/set_onboarding_stage/", SetUserOnboardingStage.as_view()),
3840
path("users/<int:pk>/force_verify/", ForceVerifyView.as_view()),
3941
path("users/<int:user_pk>/news/", NewsList.as_view()),

users/views.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from django.shortcuts import redirect
88
from django_filters import rest_framework as filters
99
from rest_framework import status, permissions
10+
from rest_framework import exceptions
1011
from rest_framework.generics import (
1112
GenericAPIView,
1213
ListAPIView,
@@ -20,6 +21,7 @@
2021
from rest_framework.views import APIView
2122
from rest_framework_simplejwt.tokens import RefreshToken, TokenError
2223

24+
from core.pagination import Pagination
2325
from core.permissions import IsOwnerOrReadOnly
2426
from events.models import Event
2527
from events.serializers import EventsListSerializer
@@ -51,6 +53,7 @@
5153
VerifyEmailSerializer,
5254
ResendVerifyEmailSerializer,
5355
UserProjectListSerializer,
56+
UserSubscribedProjectsSerializer,
5457
)
5558
from .filters import UserFilter
5659
from .pagination import UsersPagination
@@ -370,3 +373,16 @@ def post(self, request, *args, **kwargs):
370373
return Response(status=status.HTTP_200_OK)
371374
except User.DoesNotExist:
372375
return Response(status=status.HTTP_404_NOT_FOUND)
376+
377+
378+
class UserSubscribedProjectsList(ListAPIView):
379+
permission_classes = [IsAuthenticated]
380+
serializer_class = UserSubscribedProjectsSerializer
381+
pagination_class = Pagination
382+
383+
def get_queryset(self):
384+
try:
385+
user = User.objects.get(pk=self.kwargs["pk"])
386+
return user.subscribed_projects.all()
387+
except User.DoesNotExist:
388+
raise exceptions.NotFound

0 commit comments

Comments
 (0)