Skip to content

Commit 9267846

Browse files
committed
Feat: check like status and check follow status
1 parent d273cc1 commit 9267846

2 files changed

Lines changed: 33 additions & 4 deletions

File tree

backend/projects/urls.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
from django.urls import path
2-
from .views import ProjectCRUDView, get_projects, toggle_follow, toggle_like, project_member_hander
2+
from .views import ProjectCRUDView, get_projects, toggle_follow, toggle_like, project_member_hander, check_like_status, check_follow_status
33

44
urlpatterns = [
55
path('', get_projects, name='get_projects'), # Fetch all projects
66
path('create/', ProjectCRUDView.as_view(), name='project-create'), # Create project
77
path('<str:pk>/', ProjectCRUDView.as_view(), name='project-detail'), # Read, Update, Delete project by ID
8-
path('like/<str:project_id>', toggle_like, name='toggle_like'),
9-
path('follow/<str:project_id>', toggle_follow, name='toggle_follow'),
10-
path('member/manage/<str:project_id>', project_member_hander, name='project-member-handler'),
8+
path('like/<str:project_id>/', toggle_like, name='toggle_like'),
9+
path('follow/<str:project_id>/', toggle_follow, name='toggle_follow'),
10+
path('member/manage/<str:project_id>/', project_member_hander, name='project-member-handler'),
11+
path('likes/check/<str:user_id>/<str:project_id>/', check_like_status, name='check_like_status'),
12+
path('follows/check/<str:user_id>/<str:project_id>/', check_follow_status, name='check_follow_status')
1113
]

backend/projects/views.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,30 @@ def project_member_hander(request, project_id):
155155
except User.DoesNotExist:
156156
return Response({'error': 'User not found'}, status=404)
157157

158+
@api_view(['GET'])
159+
@permission_classes([AllowAny])
160+
def check_like_status(request, user_id, project_id):
161+
try:
162+
project = get_object_or_404(Project, id=project_id)
163+
user = get_object_or_404(User, id=user_id)
164+
165+
liked = Like.objects.filter(project=project, user=user).exists()
166+
167+
return Response({'liked': liked}, status=status.HTTP_200_OK)
168+
169+
except Exception as e:
170+
return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST)
171+
172+
@api_view(['GET'])
173+
@permission_classes([AllowAny])
174+
def check_follow_status(request, user_id, project_id):
175+
try:
176+
project = get_object_or_404(Project, id=project_id)
177+
user = get_object_or_404(User, id=user_id)
178+
179+
followed = Follow.objects.filter(project=project, user=user).exists()
180+
181+
return Response({'followed': followed}, status=status.HTTP_200_OK)
182+
183+
except Exception as e:
184+
return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST)

0 commit comments

Comments
 (0)