Coverage for backend/django/core/auxiliary/serializers/MonitoringTableSerializer.py: 91%
36 statements
« prev ^ index » next coverage.py v7.10.7, created at 2026-02-12 01:47 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2026-02-12 01:47 +0000
1from django.db import transaction
2from rest_framework import serializers
3from ..models.MonitoringTable import MonitoringTable, MonitoringTableProperty
5class MonitoringTablePropertySerializer(serializers.ModelSerializer):
6 class Meta:
7 model = MonitoringTableProperty
8 fields = '__all__'
9 read_only_fields = ["id", "created_at", "table", "flowsheet"]
11 def validate(self, attrs):
12 table = getattr(self.instance, "table", None)
13 flowsheet = getattr(self.instance, "flowsheet", None)
14 if table and flowsheet and table.flowsheet_id != flowsheet.id: 14 ↛ 15line 14 didn't jump to line 15 because the condition on line 14 was never true
15 raise serializers.ValidationError("flowsheet must match table.flowsheet")
16 return attrs
18class MonitoringTableSerializer(serializers.ModelSerializer):
19 selectedProperties = MonitoringTablePropertySerializer(many=True, required=False)
21 class Meta:
22 model = MonitoringTable
23 fields = '__all__'
24 read_only_fields = ["id", "created_at"]
26 def create(self, validated_data):
27 selected = validated_data.pop("selectedProperties", [])
28 with transaction.atomic():
29 table = super().create(validated_data)
30 for item in selected: 30 ↛ 31line 30 didn't jump to line 31 because the loop on line 30 never started
31 MonitoringTableProperty.objects.create(
32 table=table,
33 flowsheet=table.flowsheet,
34 **item,
35 )
36 return table
38 def update(self, instance, validated_data):
39 selected: list = validated_data.pop("selectedProperties", None)
40 with transaction.atomic():
41 instance: MonitoringTable = super().update(instance, validated_data)
43 if selected is not None:
44 instance.selectedProperties.all().delete()
45 for item in selected:
46 MonitoringTableProperty.objects.create(
47 table=instance,
48 flowsheet=instance.flowsheet,
49 **item,
50 )
51 return instance