diff --git a/task_app/models.py b/task_app/models.py index e920ebb..bde812f 100644 --- a/task_app/models.py +++ b/task_app/models.py @@ -13,7 +13,7 @@ class Task(models.Model): priority = models.CharField(max_length=50, choices=TaskPriority.choices) status = models.CharField(max_length=50, choices=TaskStatus.choices) date = models.DateField() - creator = models.ForeignKey(User, related_name="created_tasks", on_delete=models.CASCADE) + creator = models.ForeignKey(User, on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): @@ -29,8 +29,8 @@ class SubTask(models.Model): return f"{self.task.title} - {self.title}" class AssignedTask(models.Model): - user = models.ForeignKey(User, related_name="assigned_tasks", on_delete=models.CASCADE) - task = models.ForeignKey(Task, related_name="assigned_tasks", on_delete=models.CASCADE) + user = models.ForeignKey(User, on_delete=models.CASCADE) + task = models.ForeignKey(Task, related_name="assigned", on_delete=models.CASCADE) def __str__(self): return f"{self.user} - {self.task}" \ No newline at end of file diff --git a/task_app/serializers.py b/task_app/serializers.py index e686121..b4cccb6 100644 --- a/task_app/serializers.py +++ b/task_app/serializers.py @@ -4,11 +4,9 @@ from djangorestframework_camel_case.parser import CamelCaseJSONParser from .models import Task, SubTask, AssignedTask class SubTaskSerializer(serializers.ModelSerializer): - task = serializers.CharField(source='task.id') - class Meta: model = SubTask - fields = ['id', 'title', 'status', 'task'] + fields = ['id', 'title', 'status'] class AssignedTaskSerializer(serializers.ModelSerializer): user_id = serializers.CharField(source='user.id', read_only=True) @@ -19,10 +17,8 @@ class AssignedTaskSerializer(serializers.ModelSerializer): class TaskSerializer(serializers.ModelSerializer): subtasks = SubTaskSerializer(many=True, read_only=True) - assignees = AssignedTaskSerializer(source='assigned_tasks', many=True, read_only=True) - - def get_assignees(self, obj): - return list(obj.assigned_tasks.all().values('user_id')) + assignees = AssignedTaskSerializer(source='assigned', many=True, read_only=True) + creator = serializers.CharField(source='creator.id', read_only=True) class Meta: model = Task diff --git a/task_app/tests/test_serializers.py b/task_app/tests/test_serializers.py index 4d5c262..e63f345 100644 --- a/task_app/tests/test_serializers.py +++ b/task_app/tests/test_serializers.py @@ -1,4 +1,3 @@ -import uuid from django.test import TestCase from django.contrib.auth import get_user_model from task_app.models import Task, SubTask, AssignedTask @@ -11,17 +10,14 @@ User = get_user_model() class SerializerTests(TestCase): def setUp(self): - user = User.objects.create(first_name="Test", last_name="User", email="test@example.com") - self.user = user - self.test_date = date(2025, 1, 1) - + self.user = User.objects.create(first_name="Test", last_name="User", email="test@example.com") self.task = Task.objects.create( title="Test Task 1", description="Description 1", category=TaskCategory.TECHNICAL_TASK, priority=TaskPriority.LOW, status=TaskStatus.TODO, - date=self.test_date, + date='2025-01-01', creator=self.user ) @@ -32,7 +28,7 @@ class SerializerTests(TestCase): def test_subtask_serializer(self): serializer = SubTaskSerializer(self.subtask1) - expected_data = {'id': str(self.subtask1.id), 'title': 'SubTask 1', 'status': True, 'task': str(self.task.id)} + expected_data = {'id': str(self.subtask1.id), 'title': 'SubTask 1', 'status': True} self.assertEqual(serializer.data, expected_data) def test_assigned_task_serializer(self): @@ -50,11 +46,11 @@ class SerializerTests(TestCase): 'priority': 'low', 'status': 'todo', 'date': '2025-01-01', - 'creator': self.user.id, + 'creator': str(self.user.id), 'created_at': self.task.created_at.isoformat().replace('+00:00', 'Z'), 'subtasks': [ - {'id': str(self.subtask1.id), 'title': 'SubTask 1', 'status': True, 'task': str(self.task.id)}, - {'id': str(self.subtask2.id), 'title': 'SubTask 2', 'status': False, 'task': str(self.task.id)} + {'id': str(self.subtask1.id), 'title': 'SubTask 1', 'status': True}, + {'id': str(self.subtask2.id), 'title': 'SubTask 2', 'status': False} ], 'assignees': [{'user_id': str(self.assigned_user.id)}] }