|
14 | 14 | from rest_framework_simplejwt.tokens import RefreshToken |
15 | 15 |
|
16 | 16 | from api.models import ( |
| 17 | + BlockedUser, |
| 18 | + CloseFriend, |
17 | 19 | FollowList, |
18 | 20 | FollowRequest, |
| 21 | + MutedUser, |
19 | 22 | PagePermission, |
20 | 23 | Profile, |
21 | 24 | Role, |
22 | 25 | User, |
23 | 26 | UserPermission, |
| 27 | + UserSettings, |
24 | 28 | ) |
25 | 29 | from api.pagination import DefaultPagination |
26 | 30 | from api.permissions import DynamicPagePermission |
|
31 | 35 | LoginSerializer, |
32 | 36 | ProfileSerializer, |
33 | 37 | RegisterSerializer, |
| 38 | + UserSettingsSerializer, |
34 | 39 | ) |
35 | 40 |
|
36 | 41 |
|
| 42 | +# ===================== Auth Views ===================== |
37 | 43 | class RegisterView(APIView): |
38 | 44 | permission_classes = [AllowAny] |
39 | 45 | serializer_class = RegisterSerializer |
@@ -317,6 +323,66 @@ def post(self, request): |
317 | 323 | ) |
318 | 324 |
|
319 | 325 |
|
| 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 | + |
320 | 386 | # ======================== Logout View ======================== |
321 | 387 | class LogoutView(APIView): |
322 | 388 | permission_classes = [IsAuthenticated] |
|
0 commit comments