53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
from rest_framework import serializers
|
|
|
|
from core.apps.tasks.models.task import Task
|
|
from core.apps.accounts.serializers.user import ShortUserSerializer
|
|
from core.apps.tasks.serializers.label import LabelSerializer
|
|
|
|
|
|
class TaskSerializer(serializers.ModelSerializer):
|
|
labels = LabelSerializer(many=True)
|
|
assignees = serializers.SerializerMethodField(method_name='get_assignees')
|
|
created_by = serializers.SerializerMethodField(method_name='get_created_by')
|
|
|
|
class Meta:
|
|
model = Task
|
|
fields = [
|
|
'id',
|
|
'column',
|
|
'name',
|
|
'description',
|
|
'priority',
|
|
'from_date',
|
|
'to_date',
|
|
'labels',
|
|
'assignees',
|
|
'created_by'
|
|
]
|
|
|
|
def get_assignees(self, obj):
|
|
return ShortUserSerializer(obj.assignees.all(), many=True, context={"request": self.context['request']}).data
|
|
|
|
def get_created_by(self, obj):
|
|
return ShortUserSerializer(obj.created_by, context={"request": self.context['request']}).data
|
|
|
|
|
|
class TaskCreateSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Task
|
|
fields = [
|
|
'id',
|
|
'column',
|
|
'name',
|
|
'description',
|
|
'priority',
|
|
'from_date',
|
|
'to_date',
|
|
'labels',
|
|
'assignees',
|
|
]
|
|
|
|
def create(self, validated_data):
|
|
validated_data['created_by'] = self.context['request'].user
|
|
return super().create(validated_data)
|