fix: task creation by automatically setting the creator field to the authenticated user
This commit is contained in:
parent
1f3f16a1f3
commit
7c96da524b
2 changed files with 21 additions and 8 deletions
|
|
@ -26,4 +26,8 @@ class TaskSerializer(serializers.ModelSerializer):
|
||||||
read_only_fields = ['id', 'creator', 'created_at']
|
read_only_fields = ['id', 'creator', 'created_at']
|
||||||
|
|
||||||
renderer_classes = [CamelCaseJSONRenderer]
|
renderer_classes = [CamelCaseJSONRenderer]
|
||||||
parser_classes = [CamelCaseJSONParser]
|
parser_classes = [CamelCaseJSONParser]
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
validated_data['creator'] = self.context['request'].user
|
||||||
|
return super().create(validated_data)
|
||||||
|
|
@ -17,31 +17,40 @@ class TaskViewSet(viewsets.ModelViewSet):
|
||||||
|
|
||||||
def retrieve(self, request, pk=None):
|
def retrieve(self, request, pk=None):
|
||||||
task = get_cached_task_by_id(pk)
|
task = get_cached_task_by_id(pk)
|
||||||
|
serializer = self.get_serializer(task)
|
||||||
|
|
||||||
if not task:
|
if not task:
|
||||||
return Response({'error': 'Task not found.'}, status=status.HTTP_404_NOT_FOUND)
|
return Response({'error': 'Task not found.'}, status=status.HTTP_404_NOT_FOUND)
|
||||||
serializer = self.get_serializer(task)
|
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
serializer = self.get_serializer(data=request.data)
|
serializer = self.get_serializer(data=request.data)
|
||||||
|
|
||||||
if not serializer.is_valid():
|
if not serializer.is_valid():
|
||||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
task = serializer.save()
|
try:
|
||||||
assign_users_to_task(request.data.get('assignees', []), task)
|
task = serializer.save()
|
||||||
|
except Exception as e:
|
||||||
|
return Response({"error": f"Task creation failed: {str(e)}"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||||
|
|
||||||
|
assignees_data = request.data.get('assignees', [])
|
||||||
|
if assignees_data:
|
||||||
|
assign_users_to_task(assignees_data, task)
|
||||||
|
|
||||||
subtasks_data = request.data.get("subtasks", [])
|
subtasks_data = request.data.get("subtasks", [])
|
||||||
|
|
||||||
if subtasks_data:
|
if subtasks_data:
|
||||||
create_subtasks(subtasks_data, task)
|
create_subtasks(subtasks_data, task)
|
||||||
|
|
||||||
cache.delete(f"task_{task.id}")
|
cache.delete(f"task_{task.id}")
|
||||||
|
|
||||||
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
||||||
|
|
||||||
def update(self, request, *args, **kwargs):
|
def update(self, request, *args, **kwargs):
|
||||||
task = self.get_object()
|
task = self.get_object()
|
||||||
serializer = self.get_serializer(task, data=request.data, partial=True)
|
serializer = self.get_serializer(task, data=request.data, partial=True)
|
||||||
|
|
||||||
if not serializer.is_valid():
|
if not serializer.is_valid():
|
||||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue