|
27 | 27 | CannotRemoveOwnerException,
|
28 | 28 | CannotRemoveTeamPOCException,
|
29 | 29 | )
|
| 30 | +from todo.serializers.remove_from_team_serializer import RemoveFromTeamSerializer |
30 | 31 |
|
31 | 32 |
|
32 | 33 | class TeamListView(APIView):
|
@@ -476,10 +477,37 @@ class RemoveTeamMemberView(APIView):
|
476 | 477 | },
|
477 | 478 | tags=["teams"],
|
478 | 479 | )
|
| 480 | + def _handle_validation_errors(self, errors): |
| 481 | + """Handle validation errors and return appropriate response.""" |
| 482 | + formatted = [] |
| 483 | + for field, msgs in errors.items(): |
| 484 | + for msg in msgs: |
| 485 | + formatted.append( |
| 486 | + { |
| 487 | + "source": field, |
| 488 | + "title": "Invalid value", |
| 489 | + "detail": str(msg), |
| 490 | + } |
| 491 | + ) |
| 492 | + return Response( |
| 493 | + { |
| 494 | + "statusCode": 400, |
| 495 | + "message": "Validation Error", |
| 496 | + "errors": formatted, |
| 497 | + "authenticated": getattr(self.request, "user", None) is not None, |
| 498 | + }, |
| 499 | + status=400, |
| 500 | + ) |
| 501 | + |
479 | 502 | def delete(self, request, team_id, user_id):
|
480 | 503 | print(f"DEBUG: RemoveTeamMemberView.delete called with team_id={team_id}, user_id={user_id}")
|
481 | 504 | from todo.services.team_service import TeamService
|
482 | 505 |
|
| 506 | + serializer = RemoveFromTeamSerializer(data={"team_id": team_id, "user_id": user_id}) |
| 507 | + |
| 508 | + if not serializer.is_valid(): |
| 509 | + return self._handle_validation_errors(serializer.errors) |
| 510 | + |
483 | 511 | try:
|
484 | 512 | # Pass the user performing the removal (request.user_id) and the user being removed (user_id)
|
485 | 513 | TeamService.remove_member_from_team(user_id=user_id, team_id=team_id, removed_by_user_id=request.user_id)
|
|
0 commit comments