* feat: intake * chore: intake model migration changes * dev: update dummy data * dev: add duplicate apis for inbox * dev: fix external apis * fix: external apis * chore: migration file changes --------- Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
109 lines
3.1 KiB
Python
109 lines
3.1 KiB
Python
# Third party frameworks
|
|
from rest_framework import serializers
|
|
|
|
# Module imports
|
|
from .base import BaseSerializer
|
|
from .issue import (
|
|
IssueIntakeSerializer,
|
|
LabelLiteSerializer,
|
|
IssueDetailSerializer,
|
|
)
|
|
from .project import ProjectLiteSerializer
|
|
from .state import StateLiteSerializer
|
|
from .user import UserLiteSerializer
|
|
from plane.db.models import Intake, IntakeIssue, Issue
|
|
|
|
|
|
class IntakeSerializer(BaseSerializer):
|
|
project_detail = ProjectLiteSerializer(source="project", read_only=True)
|
|
pending_issue_count = serializers.IntegerField(read_only=True)
|
|
|
|
class Meta:
|
|
model = Intake
|
|
fields = "__all__"
|
|
read_only_fields = [
|
|
"project",
|
|
"workspace",
|
|
]
|
|
|
|
|
|
class IntakeIssueSerializer(BaseSerializer):
|
|
issue = IssueIntakeSerializer(read_only=True)
|
|
|
|
class Meta:
|
|
model = IntakeIssue
|
|
fields = [
|
|
"id",
|
|
"status",
|
|
"duplicate_to",
|
|
"snoozed_till",
|
|
"source",
|
|
"issue",
|
|
"created_by",
|
|
]
|
|
read_only_fields = [
|
|
"project",
|
|
"workspace",
|
|
]
|
|
|
|
def to_representation(self, instance):
|
|
# Pass the annotated fields to the Issue instance if they exist
|
|
if hasattr(instance, "label_ids"):
|
|
instance.issue.label_ids = instance.label_ids
|
|
return super().to_representation(instance)
|
|
|
|
|
|
class IntakeIssueDetailSerializer(BaseSerializer):
|
|
issue = IssueDetailSerializer(read_only=True)
|
|
duplicate_issue_detail = IssueIntakeSerializer(
|
|
read_only=True, source="duplicate_to"
|
|
)
|
|
|
|
class Meta:
|
|
model = IntakeIssue
|
|
fields = [
|
|
"id",
|
|
"status",
|
|
"duplicate_to",
|
|
"snoozed_till",
|
|
"duplicate_issue_detail",
|
|
"source",
|
|
"issue",
|
|
]
|
|
read_only_fields = [
|
|
"project",
|
|
"workspace",
|
|
]
|
|
|
|
def to_representation(self, instance):
|
|
# Pass the annotated fields to the Issue instance if they exist
|
|
if hasattr(instance, "assignee_ids"):
|
|
instance.issue.assignee_ids = instance.assignee_ids
|
|
if hasattr(instance, "label_ids"):
|
|
instance.issue.label_ids = instance.label_ids
|
|
|
|
return super().to_representation(instance)
|
|
|
|
|
|
class IntakeIssueLiteSerializer(BaseSerializer):
|
|
class Meta:
|
|
model = IntakeIssue
|
|
fields = ["id", "status", "duplicate_to", "snoozed_till", "source"]
|
|
read_only_fields = fields
|
|
|
|
|
|
class IssueStateIntakeSerializer(BaseSerializer):
|
|
state_detail = StateLiteSerializer(read_only=True, source="state")
|
|
project_detail = ProjectLiteSerializer(read_only=True, source="project")
|
|
label_details = LabelLiteSerializer(
|
|
read_only=True, source="labels", many=True
|
|
)
|
|
assignee_details = UserLiteSerializer(
|
|
read_only=True, source="assignees", many=True
|
|
)
|
|
sub_issues_count = serializers.IntegerField(read_only=True)
|
|
issue_intake = IntakeIssueLiteSerializer(read_only=True, many=True)
|
|
|
|
class Meta:
|
|
model = Issue
|
|
fields = "__all__"
|