Skip to content

Commit 3d20bfb

Browse files
committed
Merge branch 'develop' of https://github.com/Hariom01010/todo-backend into remove-from-team-api
2 parents bd88687 + 50931bd commit 3d20bfb

File tree

2 files changed

+16
-48
lines changed

2 files changed

+16
-48
lines changed

todo/views/task.py

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@
33
from rest_framework.response import Response
44
from rest_framework import status
55
from rest_framework.request import Request
6-
from rest_framework.exceptions import AuthenticationFailed, ValidationError
6+
from rest_framework.exceptions import ValidationError
77
from django.conf import settings
88
from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiResponse
99
from drf_spectacular.types import OpenApiTypes
10-
from todo.middlewares.jwt_auth import get_current_user_info
1110
from todo.serializers.get_tasks_serializer import GetTaskQueryParamsSerializer
1211
from todo.serializers.create_task_serializer import CreateTaskSerializer
1312
from todo.serializers.update_task_serializer import UpdateTaskSerializer
@@ -78,22 +77,18 @@ def get(self, request: Request):
7877
query = GetTaskQueryParamsSerializer(data=request.query_params)
7978
query.is_valid(raise_exception=True)
8079
if query.validated_data["profile"]:
81-
user = get_current_user_info(request)
82-
if not user:
83-
raise AuthenticationFailed(ApiErrors.AUTHENTICATION_FAILED)
8480
status_filter = query.validated_data.get("status", "").upper()
8581
response = TaskService.get_tasks_for_user(
86-
user_id=user["user_id"],
82+
user_id=request.user_id,
8783
page=query.validated_data["page"],
8884
limit=query.validated_data["limit"],
8985
status_filter=status_filter,
9086
)
9187
return Response(data=response.model_dump(mode="json"), status=status.HTTP_200_OK)
9288

93-
user = get_current_user_info(request)
9489
if query.validated_data["profile"]:
9590
response = TaskService.get_tasks_for_user(
96-
user_id=user["user_id"],
91+
user_id=request.user_id,
9792
page=query.validated_data["page"],
9893
limit=query.validated_data["limit"],
9994
)
@@ -109,7 +104,7 @@ def get(self, request: Request):
109104
limit=query.validated_data["limit"],
110105
sort_by=query.validated_data["sort_by"],
111106
order=query.validated_data.get("order"),
112-
user_id=user["user_id"],
107+
user_id=request.user_id,
113108
team_id=team_id,
114109
status_filter=status_filter,
115110
)
@@ -137,15 +132,13 @@ def post(self, request: Request):
137132
Returns:
138133
Response: HTTP response with created task data or error details
139134
"""
140-
user = get_current_user_info(request)
141-
142135
serializer = CreateTaskSerializer(data=request.data)
143136

144137
if not serializer.is_valid():
145138
return self._handle_validation_errors(serializer.errors)
146139

147140
try:
148-
dto = CreateTaskDTO(**serializer.validated_data, createdBy=user["user_id"])
141+
dto = CreateTaskDTO(**serializer.validated_data, createdBy=request.user_id)
149142
response: CreateTaskResponse = TaskService.create_task(dto)
150143

151144
return Response(data=response.model_dump(mode="json"), status=status.HTTP_201_CREATED)
@@ -245,9 +238,8 @@ def get(self, request: Request, task_id: str):
245238
},
246239
)
247240
def delete(self, request: Request, task_id: str):
248-
user = get_current_user_info(request)
249241
task_id = ObjectId(task_id)
250-
TaskService.delete_task(task_id, user["user_id"])
242+
TaskService.delete_task(task_id, request.user_id)
251243
return Response(status=status.HTTP_204_NO_CONTENT)
252244

253245
@extend_schema(
@@ -283,16 +275,14 @@ def patch(self, request: Request, task_id: str):
283275
Can also be used to defer a task by using ?action=defer query parameter.
284276
"""
285277
action = request.query_params.get("action", "update")
286-
user = get_current_user_info(request)
287-
288278
if action == "defer":
289279
serializer = DeferTaskSerializer(data=request.data)
290280
serializer.is_valid(raise_exception=True)
291281

292282
updated_task_dto = TaskService.defer_task(
293283
task_id=task_id,
294284
deferred_till=serializer.validated_data["deferredTill"],
295-
user_id=user["user_id"],
285+
user_id=request.user_id,
296286
)
297287
elif action == "update":
298288
serializer = UpdateTaskSerializer(data=request.data, partial=True)
@@ -302,7 +292,7 @@ def patch(self, request: Request, task_id: str):
302292
updated_task_dto = TaskService.update_task(
303293
task_id=task_id,
304294
validated_data=serializer.validated_data,
305-
user_id=user["user_id"],
295+
user_id=request.user_id,
306296
)
307297
else:
308298
raise ValidationError({"action": ValidationErrors.UNSUPPORTED_ACTION.format(action)})
@@ -338,10 +328,6 @@ def patch(self, request: Request, task_id: str):
338328
Update both task details and assignee information in a single request.
339329
Similar to task creation but for updates.
340330
"""
341-
user = get_current_user_info(request)
342-
if not user:
343-
raise AuthenticationFailed(ApiErrors.AUTHENTICATION_FAILED)
344-
345331
serializer = UpdateTaskSerializer(data=request.data, partial=True)
346332

347333
if not serializer.is_valid():
@@ -350,7 +336,7 @@ def patch(self, request: Request, task_id: str):
350336
try:
351337
# Update the task using the service with validated data
352338
updated_task_dto = TaskService.update_task_with_assignee_from_dict(
353-
task_id=task_id, validated_data=serializer.validated_data, user_id=user["user_id"]
339+
task_id=task_id, validated_data=serializer.validated_data, user_id=request.user_id
354340
)
355341

356342
return Response(data=updated_task_dto.model_dump(mode="json"), status=status.HTTP_200_OK)
@@ -429,10 +415,6 @@ class AssignTaskToUserView(APIView):
429415
},
430416
)
431417
def patch(self, request: Request, task_id: str):
432-
user = get_current_user_info(request)
433-
if not user:
434-
raise AuthenticationFailed(ApiErrors.AUTHENTICATION_FAILED)
435-
436418
serializer = AssignTaskToUserSerializer(data=request.data)
437419
if not serializer.is_valid():
438420
return Response(data={"errors": serializer.errors}, status=status.HTTP_400_BAD_REQUEST)
@@ -441,7 +423,7 @@ def patch(self, request: Request, task_id: str):
441423
dto = CreateTaskAssignmentDTO(
442424
task_id=task_id, assignee_id=serializer.validated_data["assignee_id"], user_type="user"
443425
)
444-
response: CreateTaskAssignmentResponse = TaskAssignmentService.create_task_assignment(dto, user["user_id"])
426+
response: CreateTaskAssignmentResponse = TaskAssignmentService.create_task_assignment(dto, request.user_id)
445427
return Response(data=response.model_dump(mode="json"), status=status.HTTP_200_OK)
446428
except Exception as e:
447429
error_response = ApiErrorResponse(

todo/views/task_assignment.py

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,11 @@
22
from rest_framework.response import Response
33
from rest_framework import status
44
from rest_framework.request import Request
5-
from rest_framework.exceptions import AuthenticationFailed
65
from django.conf import settings
76
from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiResponse
87
from drf_spectacular.types import OpenApiTypes
98
from rest_framework import serializers
109

11-
from todo.middlewares.jwt_auth import get_current_user_info
1210
from todo.serializers.create_task_assignment_serializer import CreateTaskAssignmentSerializer
1311
from todo.services.task_assignment_service import TaskAssignmentService
1412
from todo.dto.task_assignment_dto import CreateTaskAssignmentDTO
@@ -53,17 +51,13 @@ def post(self, request: Request):
5351
Returns:
5452
Response: HTTP response with created assignment data or error details
5553
"""
56-
user = get_current_user_info(request)
57-
if not user:
58-
raise AuthenticationFailed(ApiErrors.AUTHENTICATION_FAILED)
59-
6054
serializer = CreateTaskAssignmentSerializer(data=request.data)
6155
if not serializer.is_valid():
6256
return Response(data={"errors": serializer.errors}, status=status.HTTP_400_BAD_REQUEST)
6357

6458
try:
6559
dto = CreateTaskAssignmentDTO(**serializer.validated_data)
66-
response: CreateTaskAssignmentResponse = TaskAssignmentService.create_task_assignment(dto, user["user_id"])
60+
response: CreateTaskAssignmentResponse = TaskAssignmentService.create_task_assignment(dto, request.user_id)
6761

6862
return Response(data=response.model_dump(mode="json"), status=status.HTTP_201_CREATED)
6963

@@ -177,10 +171,6 @@ def patch(self, request: Request, task_id: str):
177171
Set or update the executor for a team-assigned task. Only the SPOC can perform this action.
178172
For user assignments, this endpoint is not applicable.
179173
"""
180-
user = get_current_user_info(request)
181-
if not user:
182-
raise AuthenticationFailed(ApiErrors.AUTHENTICATION_FAILED)
183-
184174
executor_id = request.data.get("executor_id")
185175
if not executor_id:
186176
return Response({"error": "executor_id is required"}, status=status.HTTP_400_BAD_REQUEST)
@@ -204,7 +194,7 @@ def patch(self, request: Request, task_id: str):
204194
)
205195

206196
# Only SPOC can update executor
207-
if not TeamRepository.is_user_spoc(str(assignment.assignee_id), user["user_id"]):
197+
if not TeamRepository.is_user_spoc(str(assignment.assignee_id), request.user_id):
208198
return Response(
209199
{"error": "Only the SPOC can update executor for this team task."}, status=status.HTTP_403_FORBIDDEN
210200
)
@@ -224,14 +214,14 @@ def patch(self, request: Request, task_id: str):
224214
# Update executor_id
225215
try:
226216
updated_assignment = TaskAssignmentRepository.update_assignment(
227-
task_id, executor_id, "user", user["user_id"]
217+
task_id, executor_id, "user", request.user_id
228218
)
229219
if not updated_assignment:
230220
# Get more details about why it failed
231221
import traceback
232222

233223
print(
234-
f"DEBUG: update_executor failed for task_id={task_id}, executor_id={executor_id}, user_id={user['user_id']}"
224+
f"DEBUG: update_executor failed for task_id={task_id}, executor_id={executor_id}, user_id={request.user_id}"
235225
)
236226
print(f"DEBUG: assignment details: {assignment}")
237227
return Response(
@@ -257,7 +247,7 @@ def patch(self, request: Request, task_id: str):
257247
team_id=assignment.assignee_id,
258248
previous_executor_id=previous_executor_id,
259249
new_executor_id=executor_id,
260-
spoc_id=user["user_id"],
250+
spoc_id=request.user_id,
261251
action="reassign_executor",
262252
)
263253
AuditLogRepository.create(audit_log)
@@ -295,12 +285,8 @@ def delete(self, request: Request, task_id: str):
295285
Returns:
296286
Response: HTTP response with success or error details
297287
"""
298-
user = get_current_user_info(request)
299-
if not user:
300-
raise AuthenticationFailed(ApiErrors.AUTHENTICATION_FAILED)
301-
302288
try:
303-
success = TaskAssignmentService.delete_task_assignment(task_id, user["user_id"])
289+
success = TaskAssignmentService.delete_task_assignment(task_id, request.user_id)
304290
if not success:
305291
error_response = ApiErrorResponse(
306292
statusCode=404,

0 commit comments

Comments
 (0)