Skip to content

Commit 18ef4bd

Browse files
committed
Added is_user_liked field for ProjectNews serializers
1 parent 68b8c20 commit 18ef4bd

2 files changed

Lines changed: 31 additions & 1 deletion

File tree

projects/serializers.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from rest_framework import serializers
33

44
from core.fields import CustomListField
5-
from core.services import get_views_count, get_likes_count
5+
from core.services import get_views_count, get_likes_count, is_fan
66
from industries.models import Industry
77
from projects.models import Project, Achievement, Collaborator, ProjectNews
88
from projects.validators import validate_project
@@ -215,6 +215,7 @@ class ProjectNewsListSerializer(serializers.ModelSerializer):
215215
likes_count = serializers.SerializerMethodField()
216216
project_name = serializers.SerializerMethodField()
217217
project_image_address = serializers.SerializerMethodField()
218+
is_user_liked = serializers.SerializerMethodField()
218219

219220
def get_project_name(self, obj):
220221
return obj.project.name
@@ -228,6 +229,12 @@ def get_views_count(self, obj):
228229
def get_likes_count(self, obj):
229230
return get_likes_count(obj)
230231

232+
def get_is_user_liked(self, obj):
233+
user = self.context.get("user")
234+
if user:
235+
return is_fan(obj, user)
236+
return False
237+
231238
class Meta:
232239
model = ProjectNews
233240
fields = [
@@ -238,6 +245,7 @@ class Meta:
238245
"datetime_created",
239246
"views_count",
240247
"likes_count",
248+
"is_user_liked",
241249
"files",
242250
]
243251

@@ -247,6 +255,7 @@ class ProjectNewsDetailSerializer(serializers.ModelSerializer):
247255
likes_count = serializers.SerializerMethodField()
248256
project_name = serializers.SerializerMethodField()
249257
project_image_address = serializers.SerializerMethodField()
258+
is_user_liked = serializers.SerializerMethodField()
250259

251260
def get_project_name(self, obj):
252261
return obj.project.name
@@ -260,6 +269,12 @@ def get_views_count(self, obj):
260269
def get_likes_count(self, obj):
261270
return get_likes_count(obj)
262271

272+
def get_is_user_liked(self, obj):
273+
user = self.context.get("user")
274+
if user:
275+
return is_fan(obj, user)
276+
return False
277+
263278
class Meta:
264279
model = ProjectNews
265280
fields = [
@@ -271,5 +286,6 @@ class Meta:
271286
"datetime_updated",
272287
"views_count",
273288
"likes_count",
289+
"is_user_liked",
274290
"files",
275291
]

projects/views.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,12 @@ def get_queryset(self):
244244
project = Project.objects.get(pk=self.kwargs.get("project_pk"))
245245
return ProjectNews.objects.filter(project=project)
246246

247+
def get(self, request, *args, **kwargs):
248+
news = self.paginate_queryset(self.get_queryset())
249+
context = {"user": request.user}
250+
serializer = ProjectNewsListSerializer(news, context=context, many=True)
251+
return self.get_paginated_response(serializer.data)
252+
247253

248254
class ProjectNewsDetail(generics.RetrieveUpdateDestroyAPIView):
249255
queryset = ProjectNews.objects.all()
@@ -257,6 +263,14 @@ def get_queryset(self):
257263
except Project.DoesNotExist:
258264
return []
259265

266+
def get(self, request, *args, **kwargs):
267+
try:
268+
news = self.get_queryset().get(pk=self.kwargs["pk"])
269+
context = {"user": request.user}
270+
return Response(ProjectNewsDetailSerializer(news, context=context).data)
271+
except ProjectNews.DoesNotExist:
272+
return Response(status=status.HTTP_404_NOT_FOUND)
273+
260274

261275
class ProjectNewsDetailSetViewed(generics.CreateAPIView):
262276
queryset = ProjectNews.objects.all()

0 commit comments

Comments
 (0)