Coverage for backend/flowsheetInternals/propertyPackages/models/StreamFactory.py: 21%
31 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-11-06 23:27 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2025-11-06 23:27 +0000
1from flowsheetInternals.propertyPackages.models.SimulationObjectPropertyPackages import SimulationObjectPropertyPackages
2from flowsheetInternals.unitops.models.simulation_object_factory import SimulationObjectFactory
3from core.auxiliary.models.IndexedItem import IndexedItem
5class StreamFactory:
6 def __init__(self, property_package: SimulationObjectPropertyPackages):
7 self.property_package = property_package
8 self.simulation_object = property_package.simulationObject
9 port_keys_to_swap : list[str] = self.simulation_object.schema.propertyPackagePorts[self.property_package.name]
10 self.ports = self.simulation_object.ports.filter(key__in=port_keys_to_swap)
12 def check_and_update_stream(self):
13 if self.property_package.propertyPackage == "humid_air":
14 self.swap_to_humid_air()
15 else:
16 self.check_swap_back()
18 def swap_to_humid_air(self):
19 for port in self.ports:
20 if port.stream.objectType == "stream":
21 swap_stream_to(port.stream, "humid_air_stream")
24 def check_swap_back(self):
25 for port in self.ports:
26 if port.stream.objectType == "humid_air_stream":
27 if port.key in self.port_keys_to_swap:
28 swap_stream_to(port.stream, "stream")
31def swap_stream_to(stream, objectType):
32 # 1. get rid of indexeditems
33 IndexedItem.objects.filter(owner=stream).delete()
35 # 2. get rid of propertyset
36 stream.properties.delete()
38 # 3. switch stream objectType
39 stream.objectType = objectType
40 stream.save()
42 # 4. create indexeditems & propertyset
43 factory = SimulationObjectFactory()
44 factory.replace_the_gut(stream)
45 factory.simulation_objects = []
46 factory.perform_bulk_create()