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

1from flowsheetInternals.propertyPackages.models.SimulationObjectPropertyPackages import SimulationObjectPropertyPackages 

2from flowsheetInternals.unitops.models.simulation_object_factory import SimulationObjectFactory 

3from core.auxiliary.models.IndexedItem import IndexedItem 

4 

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) 

11 

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() 

17 

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") 

22 

23 

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") 

29 

30 

31def swap_stream_to(stream, objectType): 

32 # 1. get rid of indexeditems 

33 IndexedItem.objects.filter(owner=stream).delete() 

34 

35 # 2. get rid of propertyset 

36 stream.properties.delete() 

37 

38 # 3. switch stream objectType 

39 stream.objectType = objectType 

40 stream.save() 

41 

42 # 4. create indexeditems & propertyset 

43 factory = SimulationObjectFactory() 

44 factory.replace_the_gut(stream) 

45 factory.simulation_objects = [] 

46 factory.perform_bulk_create()