Coverage for backend/django/core/auxiliary/serializers/FlowsheetCloneValidationSerializer.py: 100%
26 statements
« prev ^ index » next coverage.py v7.10.7, created at 2026-07-22 05:22 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2026-07-22 05:22 +0000
1"""Schema contract for user-repairable flowsheet clone failures."""
3from rest_framework import serializers
5from core.auxiliary.services.flowsheet_states import (
6 CLONE_VALIDATION_ERROR_CODE,
7 CloneDeficiencyType,
8)
11class FlowsheetCloneDeficiencyItemSerializer(serializers.Serializer):
12 """Describe one safe, user-repairable location in a flowsheet."""
14 flowsheet_id = serializers.IntegerField()
15 flowsheet_name = serializers.CharField()
16 object_name = serializers.CharField()
17 object_type = serializers.CharField()
18 field_name = serializers.CharField()
19 reference_name = serializers.CharField(allow_null=True)
22class FlowsheetCloneDeficiencyCategorySerializer(serializers.Serializer):
23 """Group bounded examples under one product-facing problem class."""
25 code = serializers.ChoiceField(
26 choices=[deficiency.value for deficiency in CloneDeficiencyType]
27 )
28 total_count = serializers.IntegerField(min_value=1)
29 items = FlowsheetCloneDeficiencyItemSerializer(many=True)
30 truncated = serializers.BooleanField()
33class FlowsheetCloneValidationErrorSerializer(serializers.Serializer):
34 """Expose categorized repair locations without internal clone identifiers."""
36 code = serializers.ChoiceField(choices=[CLONE_VALIDATION_ERROR_CODE])
37 categories = FlowsheetCloneDeficiencyCategorySerializer(
38 many=True, allow_empty=False
39 )
40 flowsheet_id = serializers.IntegerField()
41 flowsheet_name = serializers.CharField()
44class CloneRequestSerializer(serializers.Serializer):
45 """Control optional data and repair behavior for a full duplicate."""
47 repair_legacy_formula_units = serializers.BooleanField(
48 required=False,
49 default=False,
50 )
51 include_scenario_results = serializers.BooleanField(
52 required=False,
53 default=False,
54 )
57class ScenarioResultCopySummarySerializer(serializers.Serializer):
58 """Counts shown before a user confirms a full duplicate."""
60 has_results = serializers.BooleanField()
61 row_count = serializers.IntegerField(min_value=0)
62 property_count = serializers.IntegerField(min_value=0)