# Third party imports from rest_framework import serializers # Module imports from .base import BaseSerializer from plane.db.models import Cycle, CycleIssue class CycleSerializer(BaseSerializer): 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) total_estimates = serializers.IntegerField(read_only=True) completed_estimates = serializers.IntegerField(read_only=True) started_estimates = serializers.IntegerField(read_only=True) def validate(self, data): if ( data.get("start_date", None) is not None and data.get("end_date", None) is not None and data.get("start_date", None) > data.get("end_date", None) ): raise serializers.ValidationError("Start date cannot exceed end date") return data class Meta: model = Cycle fields = "__all__" read_only_fields = [ "workspace", "project", "owned_by", ] class CycleIssueSerializer(BaseSerializer): sub_issues_count = serializers.IntegerField(read_only=True) class Meta: model = CycleIssue fields = "__all__" read_only_fields = [ "workspace", "project", "cycle", ] class CycleLiteSerializer(BaseSerializer): class Meta: model = Cycle fields = "__all__"