# Third party imports from rest_framework import serializers # Module imports from .base import BaseSerializer from .user import UserLiteSerializer from .issue import IssueStateSerializer from .workspace import WorkspaceLiteSerializer from .project import ProjectLiteSerializer from plane.db.models import Cycle, CycleIssue, CycleFavorite class CycleSerializer(BaseSerializer): owned_by = UserLiteSerializer(read_only=True) is_favorite = serializers.BooleanField(read_only=True) total_issues = serializers.IntegerField(read_only=True) cancelled_issues = serializers.IntegerField(read_only=True) completed_issues = serializers.IntegerField(read_only=True) started_issues = serializers.IntegerField(read_only=True) unstarted_issues = serializers.IntegerField(read_only=True) backlog_issues = serializers.IntegerField(read_only=True) workspace_detail = WorkspaceLiteSerializer(read_only=True, source="workspace") project_detail = ProjectLiteSerializer(read_only=True, source="project") class Meta: model = Cycle fields = "__all__" read_only_fields = [ "workspace", "project", "owned_by", ] class CycleIssueSerializer(BaseSerializer): issue_detail = IssueStateSerializer(read_only=True, source="issue") sub_issues_count = serializers.IntegerField(read_only=True) class Meta: model = CycleIssue fields = "__all__" read_only_fields = [ "workspace", "project", "cycle", ] class CycleFavoriteSerializer(BaseSerializer): cycle_detail = CycleSerializer(source="cycle", read_only=True) class Meta: model = CycleFavorite fields = "__all__" read_only_fields = [ "workspace", "project", "user", ]