Skip to content

Commit e6c8bf0

Browse files
committed
Day 9: Added Views for the Blocking,Mutting,close friend and user setting code
1 parent 0c02808 commit e6c8bf0

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

api/views.py

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,17 @@
1414
from rest_framework_simplejwt.tokens import RefreshToken
1515

1616
from api.models import (
17+
BlockedUser,
18+
CloseFriend,
1719
FollowList,
1820
FollowRequest,
21+
MutedUser,
1922
PagePermission,
2023
Profile,
2124
Role,
2225
User,
2326
UserPermission,
27+
UserSettings,
2428
)
2529
from api.pagination import DefaultPagination
2630
from api.permissions import DynamicPagePermission
@@ -31,9 +35,11 @@
3135
LoginSerializer,
3236
ProfileSerializer,
3337
RegisterSerializer,
38+
UserSettingsSerializer,
3439
)
3540

3641

42+
# ===================== Auth Views =====================
3743
class RegisterView(APIView):
3844
permission_classes = [AllowAny]
3945
serializer_class = RegisterSerializer
@@ -317,6 +323,66 @@ def post(self, request):
317323
)
318324

319325

326+
# ======================= Block User View =======================
327+
class BlockUserView(APIView):
328+
permission_classes = [IsAuthenticated]
329+
330+
def post(self, request, user_id):
331+
BlockedUser.objects.get_or_create(blocker=request.user, blocked_id=user_id)
332+
return Response({"detail": "User blocked"}, status=201)
333+
334+
def delete(self, request, user_id):
335+
BlockedUser.objects.filter(blocker=request.user, blocked_id=user_id).delete()
336+
return Response({"detail": "User unblocked"}, status=204)
337+
338+
339+
# ======================= Mute User View =======================
340+
class MuteUserView(APIView):
341+
permission_classes = [IsAuthenticated]
342+
343+
def post(self, request, user_id):
344+
MutedUser.objects.get_or_create(user=request.user, muted_user_id=user_id)
345+
return Response({"detail": "User muted"}, status=201)
346+
347+
def delete(self, request, user_id):
348+
MutedUser.objects.filter(user=request.user, muted_user_id=user_id).delete()
349+
return Response({"detail": "User unmuted"}, status=204)
350+
351+
352+
# ======================= Close Friends View =======================
353+
class CloseFriendView(APIView):
354+
permission_classes = [IsAuthenticated]
355+
356+
def post(self, request, user_id):
357+
CloseFriend.objects.get_or_create(user=request.user, friend_id=user_id)
358+
return Response({"detail": "Added to close friends"}, status=201)
359+
360+
def delete(self, request, user_id):
361+
CloseFriend.objects.filter(user=request.user, friend_id=user_id).delete()
362+
return Response({"detail": "Removed from close friends"}, status=204)
363+
364+
365+
# ======================= User Settings View ========================
366+
367+
368+
class UserSettingsView(APIView):
369+
permission_classes = [IsAuthenticated]
370+
371+
def get(self, request):
372+
settings_obj, _ = UserSettings.objects.get_or_create(user=request.user)
373+
serializer = UserSettingsSerializer(settings_obj)
374+
return Response(serializer.data)
375+
376+
def patch(self, request):
377+
settings_obj, _ = UserSettings.objects.get_or_create(user=request.user)
378+
serializer = UserSettingsSerializer(
379+
settings_obj, data=request.data, partial=True
380+
)
381+
serializer.is_valid(raise_exception=True)
382+
serializer.save()
383+
return Response(serializer.data)
384+
385+
320386
# ======================== Logout View ========================
321387
class LogoutView(APIView):
322388
permission_classes = [IsAuthenticated]

0 commit comments

Comments
 (0)