Coverage for backend/migration_helper/get_flowsheet_related_objects.py: 23%
317 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 functools import cached_property
3def get_many(item, attr):
4 related_manager = getattr(item, attr, None)
5 if related_manager is not None:
6 return related_manager.all()
7 return []
10def get_one_one(item, attr):
11 item = getattr(item, attr, None)
12 if item is not None:
13 return [item]
14 return []
17class GetObjectFunctions:
18 def __init__(self, flowsheet):
19 self.flowsheet = flowsheet
20 self.related_objects = []
22 def get_related_objects(self):
23 self.related_objects.extend(self.getPlot)
24 self.related_objects.extend(self.getSeries)
25 self.related_objects.extend(self.getIndexedItem)
26 self.related_objects.extend(self.getSolutions)
27 self.related_objects.extend(self.getControlValue)
28 self.related_objects.extend(self.getPropertyValue)
29 self.related_objects.extend(self.getHistoricalValue)
30 self.related_objects.extend(self.getProcessPathProperty)
31 self.related_objects.extend(self.getPropertyInfo)
32 self.related_objects.extend(self.getPropertySet)
33 self.related_objects.extend(self.getRecycleData)
34 self.related_objects.extend(self.getRecycleProperty)
35 self.related_objects.extend(self.getObjectUnits)
36 self.related_objects.extend(self.getNote)
37 self.related_objects.extend(self.getExpression)
38 self.related_objects.extend(self.getProcessPath)
39 self.related_objects.extend(self.getMLColumnMapping)
40 self.related_objects.extend(self.getMLModel)
41 self.related_objects.extend(self.getOptimization)
42 self.related_objects.extend(self.getOptimizationDegreesOfFreedom)
43 self.related_objects.extend(self.getSolveState)
44 self.related_objects.extend(self.getSolveValue)
45 self.related_objects.extend(self.getFormulaVars)
46 self.related_objects.extend(self.getPort)
47 self.related_objects.extend(self.getSimulationObject)
48 self.related_objects.extend(self.getGraphicObject)
49 self.related_objects.extend(self.getGrouping)
50 self.related_objects.extend(self.getSimulationObjectPropertyPackages)
51 self.related_objects.extend(self.getPinchOutputs)
52 self.related_objects.extend(self.getPinchTemp)
53 self.related_objects.extend(self.getTargetSummary)
54 self.related_objects.extend(self.getHeatSupplierUtilitySummary)
55 self.related_objects.extend(self.getHeatReceiverUtilitySummary)
56 self.related_objects.extend(self.getPinchGraphSet)
57 self.related_objects.extend(self.getPinchGraph)
58 self.related_objects.extend(self.getPinchCurve)
59 self.related_objects.extend(self.getGraphDataPoint)
60 self.related_objects.extend(self.getPinchInputs)
61 self.related_objects.extend(self.getPinchStream)
62 self.related_objects.extend(self.getPinchUtility)
63 self.related_objects.extend(self.getTurbineOptions)
64 self.related_objects.extend(self.getGraphOptions)
65 self.related_objects.extend(self.getMainOptions)
66 self.related_objects.extend(self.getPinchProject)
68 return self.related_objects
70 @cached_property
71 def getPlot(self):
72 return get_many(self.flowsheet, "flowsheetGraphs")
74 @cached_property
75 def getSeries(self):
76 series = []
77 for plot in self.getPlot:
78 series.extend(get_many(plot, "series"))
79 return series
81 @cached_property
82 def getIndexedItem(self):
83 indexed_items = []
84 for sim_obj in self.getSimulationObject:
85 indexed_items.extend(get_many(sim_obj, "indexed_items"))
86 return indexed_items
88 @cached_property
89 def getSolutions(self):
90 dynamic_results = []
91 for prop_val in self.getPropertyValue:
92 dynamic_results.extend(get_many(prop_val, "solutions"))
93 return dynamic_results
95 @cached_property
96 def getControlValue(self):
97 control_values = []
98 for prop_val in self.getPropertyValue:
99 control_values.extend(get_one_one(prop_val, "controlManipulated"))
100 control_values.extend(get_one_one(prop_val, "controlSetPoint"))
101 return control_values
103 @cached_property
104 def getPropertyValue(self):
105 property_values = []
106 for prop_info in self.getPropertyInfo:
107 property_values.extend(get_many(prop_info, "values"))
108 return property_values
110 @cached_property
111 def getHistoricalValue(self):
112 historical_values = []
113 for prop_info in self.getPropertyInfo:
114 historical_values.extend(get_many(prop_info, "history"))
115 return historical_values
117 @cached_property
118 def getProcessPathProperty(self):
119 process_path_properties = []
120 for prop_info in self.getPropertyInfo:
121 process_path_properties.extend(
122 get_many(prop_info, "ProcessPathProperties"))
123 return process_path_properties
125 @cached_property
126 def getPropertyInfo(self):
127 property_infos = []
128 for prop_set in self.getPropertySet:
129 property_infos.extend(get_many(prop_set, "ContainedProperties"))
130 return property_infos
132 @cached_property
133 def getPropertySet(self):
134 property_sets = []
135 for sim_obj in self.getSimulationObject:
136 property_sets.extend(get_one_one(sim_obj, "properties"))
138 for main_option in self.getMainOptions:
139 property_sets.append(main_option.selections)
140 property_sets.append(main_option.graph_options.properties)
141 property_sets.append(main_option.turbine_options.properties)
143 return property_sets
145 @cached_property
146 def getRecycleData(self):
147 recycle_datas = []
148 for sim_obj in self.getSimulationObject:
149 recycle_datas.extend(get_one_one(sim_obj, "recycleData"))
150 recycle_datas.extend(get_one_one(sim_obj, "recycleConnection"))
151 return recycle_datas
153 @cached_property
154 def getRecycleProperty(self):
155 recycle_properties = []
156 for recycle_data in self.getRecycleData:
157 recycle_properties.extend(
158 get_many(recycle_data, "propertyConnections"))
159 return recycle_properties
161 @cached_property
162 def getObjectUnits(self):
163 # have to comply with the old db schema
164 return get_many(self.flowsheet, "flowsheetOwner")
166 @cached_property
167 def getNote(self):
168 notes = []
169 for sim_obj in self.getSimulationObject:
170 notes.extend(get_many(sim_obj, "notes"))
171 return notes
173 @cached_property
174 def getExpression(self):
175 return get_many(self.flowsheet, "expressions")
177 @cached_property
178 def getProcessPath(self):
179 return get_many(self.flowsheet, "ProcessPaths")
181 @cached_property
182 def getMLColumnMapping(self):
183 ml_column_mappings = []
184 for ml_model in self.getMLModel:
185 ml_column_mappings.extend(
186 get_many(ml_model, "MLColumnMappings"))
187 return ml_column_mappings
189 @cached_property
190 def getMLModel(self):
191 ml_models = []
192 for sim_obj in self.getSimulationObject:
193 ml_models.extend(get_many(sim_obj, "MLModels"))
194 return ml_models
196 @cached_property
197 def getOptimization(self):
198 optimizations = []
199 for sim_obj in self.getSimulationObject:
200 optimizations.extend(get_many(sim_obj, "optimizations"))
201 return optimizations
203 @cached_property
204 def getOptimizationDegreesOfFreedom(self):
205 optimization_dofs = []
206 for optimizations in self.getOptimization:
207 optimization_dofs.extend(get_many(
208 optimizations, "degreesOfFreedom"))
209 return optimization_dofs
211 @cached_property
212 def getSolveState(self):
213 return get_many(self.flowsheet, "solveStates")
215 @cached_property
216 def getSolveValue(self):
217 solve_values = []
218 for solve_state in self.getSolveState:
219 solve_values.extend(get_many(solve_state, "values"))
220 return solve_values
222 @cached_property
223 def getFormulaVars(self):
224 formula_vars = []
225 for prop_val in self.getPropertyValue:
226 formula_vars.extend(get_many(prop_val, "ownerFormulaVars"))
227 formula_vars.extend(get_many(prop_val, "attributeFormulaVars"))
228 return formula_vars
230 @cached_property
231 def getPort(self):
232 ports = []
233 for sim_obj in self.getSimulationObject:
234 if hasattr(sim_obj, 'ports'):
235 ports.extend(get_many(sim_obj, "ports"))
236 elif hasattr(sim_obj, 'connectedPorts'):
237 ports.extend(get_many(sim_obj, "connectedPorts"))
238 else:
239 raise ValueError(
240 f"SimulationObject {sim_obj} does not have ports or connectedPorts attribute.")
241 return ports
243 @cached_property
244 def getSimulationObject(self):
245 return get_many(self.flowsheet, "flowsheetObjects")
247 @cached_property
248 def getGraphicObject(self):
249 graphic_objects = []
250 for sim_obj in self.getSimulationObject:
251 graphic_objects.extend(get_many(sim_obj, "graphicObject"))
253 for grouping in self.getGrouping:
254 graphic_objects.extend(get_many(grouping, "graphicObjects"))
256 return graphic_objects
258 @cached_property
259 def getGrouping(self):
260 groupings = []
261 for sim_obj in self.getSimulationObject:
262 groupings.extend(get_one_one(sim_obj, "grouping"))
263 return groupings
265 @cached_property
266 def getSimulationObjectPropertyPackages(self):
267 property_packages = []
268 for sim_obj in self.getSimulationObject:
269 property_packages.extend(get_many(sim_obj, "propertyPackages"))
270 return property_packages
272 @cached_property
273 def getPinchOutputs(self):
274 pinch_outputs = []
275 for pinch_project in self.getPinchProject:
276 pinch_outputs.extend(get_one_one(pinch_project, "Outputs"))
277 return pinch_outputs
279 @cached_property
280 def getPinchTemp(self):
281 pinch_temps = []
282 for target_summary in self.getTargetSummary:
283 pinch_temps.append(target_summary.temp_pinch)
284 return pinch_temps
286 @cached_property
287 def getTargetSummary(self):
288 target_summaries = []
289 for pinch_output in self.getPinchOutputs:
290 target_summaries.extend(get_many(pinch_output, "targets"))
291 return target_summaries
293 @cached_property
294 def getHeatSupplierUtilitySummary(self):
295 heat_supplier_utilities = []
296 for target_summary in self.getTargetSummary:
297 heat_supplier_utilities.extend(get_many(
298 target_summary, "heat_supplier_utilities"))
299 return heat_supplier_utilities
301 @cached_property
302 def getHeatReceiverUtilitySummary(self):
303 heat_receiver_utilities = []
304 for target_summary in self.getTargetSummary:
305 heat_receiver_utilities.extend(get_many(
306 target_summary, "heat_receiver_utilities"))
307 return heat_receiver_utilities
309 @cached_property
310 def getPinchGraphSet(self):
311 pinch_graph_sets = []
312 for output in self.getPinchOutputs:
313 pinch_graph_sets.extend(get_many(output, "graph_sets"))
314 return pinch_graph_sets
316 @cached_property
317 def getPinchGraph(self):
318 pinch_graphs = []
319 for graph_set in self.getPinchGraphSet:
320 pinch_graphs.extend(get_many(graph_set, "graphs"))
321 return pinch_graphs
323 @cached_property
324 def getPinchCurve(self):
325 pinch_curves = []
326 for graph in self.getPinchGraph:
327 pinch_curves.extend(get_many(graph, "segments"))
328 return pinch_curves
330 @cached_property
331 def getGraphDataPoint(self):
332 graph_data_points = []
333 for curve in self.getPinchCurve:
334 graph_data_points.extend(get_many(curve, "data_points"))
335 return graph_data_points
337 @cached_property
338 def getPinchInputs(self):
339 pinch_inputs = []
340 for pinch_project in self.getPinchProject:
341 pinch_inputs.extend(get_one_one(pinch_project, "Inputs"))
342 return pinch_inputs
344 @cached_property
345 def getPinchStream(self):
346 pinch_streams = []
347 for pinch_input in self.getPinchInputs:
348 pinch_streams.extend(get_many(pinch_input, "PinchStreams"))
349 return pinch_streams
351 @cached_property
352 def getPinchUtility(self):
353 pinch_utilities = []
354 for pinch_input in self.getPinchInputs:
355 pinch_utilities.extend(get_many(pinch_input, "PinchUtilities"))
356 return pinch_utilities
358 @cached_property
359 def getTurbineOptions(self):
360 turbine_options = []
361 for main_option in self.getMainOptions:
362 turbine_options.append(main_option.turbine_options)
363 return turbine_options
365 @cached_property
366 def getGraphOptions(self):
367 graph_options = []
368 for main_option in self.getMainOptions:
369 graph_options.append(main_option.graph_options)
370 return graph_options
372 @cached_property
373 def getMainOptions(self):
374 main_options = []
375 for pinch_projects in self.getPinchProject:
376 main_options.extend(get_one_one(pinch_projects, "Options"))
377 return main_options
379 @cached_property
380 def getPinchProject(self):
381 return get_many(self.flowsheet, "pinchProjects")