Skip to content

Commit 080833a

Browse files
committed
add draft field to user projects list
1 parent 503f1a1 commit 080833a

2 files changed

Lines changed: 44 additions & 4 deletions

File tree

users/serializers.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from core.services import get_views_count
66
from core.utils import get_user_online_cache_key
77
from projects.models import Project
8+
from projects.validators import validate_project
89
from .models import CustomUser, Expert, Investor, Member, Mentor, UserAchievement
910

1011

@@ -322,3 +323,38 @@ class PasswordSerializer(serializers.Serializer):
322323

323324
class ResendVerifyEmailSerializer(serializers.Serializer):
324325
email = serializers.EmailField(required=True)
326+
327+
328+
class UserProjectListSerializer(serializers.ModelSerializer):
329+
views_count = serializers.SerializerMethodField(method_name="count_views")
330+
short_description = serializers.SerializerMethodField()
331+
332+
@classmethod
333+
def count_views(cls, project):
334+
return get_views_count(project)
335+
336+
@classmethod
337+
def get_short_description(cls, project):
338+
return project.get_short_description()
339+
340+
class Meta:
341+
model = Project
342+
fields = [
343+
"id",
344+
"name",
345+
"leader",
346+
"short_description",
347+
"image_address",
348+
"industry",
349+
"views_count",
350+
"draft",
351+
]
352+
353+
read_only_fields = ["leader", "views_count"]
354+
355+
def is_valid(self, *, raise_exception=False):
356+
return super().is_valid(raise_exception=raise_exception)
357+
358+
def validate(self, data):
359+
super().validate(data)
360+
return validate_project(data)

users/views.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
UserListSerializer,
5151
VerifyEmailSerializer,
5252
ResendVerifyEmailSerializer,
53+
UserProjectListSerializer,
5354
)
5455
from .filters import UserFilter
5556
from .pagination import UsersPagination
@@ -253,18 +254,21 @@ class AchievementDetail(RetrieveUpdateDestroyAPIView):
253254
class UserProjectsList(GenericAPIView):
254255
permission_classes = [IsAuthenticated]
255256
pagination_class = ProjectsPagination
256-
serializer_class = ProjectListSerializer
257+
serializer_class = UserProjectListSerializer
257258

258259
def get(self, request):
259-
queryset = Project.objects.get_user_projects_for_list_view().filter(
260+
self.queryset = Project.objects.get_user_projects_for_list_view().filter(
260261
Q(leader_id=self.request.user.id) | Q(collaborator__user=self.request.user)
261262
)
262263

263-
page = self.paginate_queryset(queryset)
264+
page = self.paginate_queryset(self.queryset)
264265
if page is not None:
265266
serializer = self.get_serializer(page, many=True)
266267
return self.get_paginated_response(serializer.data)
267-
return Response(serializer.data, status=status.HTTP_200_OK)
268+
return Response(
269+
{"detail": "Unable to return paginated list"},
270+
status=status.HTTP_400_BAD_REQUEST,
271+
)
268272

269273

270274
class LogoutView(APIView):

0 commit comments

Comments
 (0)