Coverage for backend/django/PinchAnalysis/models/StreamDataProject.py: 100%
22 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
1from django.db import models
2from PinchAnalysis.models.OutputModels import PinchOutputs
3from PinchAnalysis.models.InputModels import PinchInputs
4from PinchAnalysis.models.OptionModels import MainOptions
5from core.managers import AccessControlManager, AllFlowsheetStatesManager
7class StreamDataProject(models.Model):
8 flowsheet_state = models.OneToOneField("core_auxiliary.FlowsheetState", on_delete=models.CASCADE, related_name="StreamDataProject")
9 name = models.CharField(max_length=64, default="Pinch Project", blank=True, null=True)
11 created_at = models.DateTimeField(auto_now_add=True)
12 objects = AccessControlManager()
13 all_states = AllFlowsheetStatesManager()
16 class Meta:
17 ordering = ['created_at']
19 @classmethod
20 def create(cls, groupOwner, flowsheet_state, baseName=None):
21 """Create the required Pinch input/output shells for one state."""
23 name = f'{baseName or groupOwner.simulationObject.componentName} Pinch Analysis'
24 instance = StreamDataProject.objects.create(
25 flowsheet_state=flowsheet_state,
26 name=name,
27 )
29 # Create Options and set for Pinch Analysis
30 MainOptions.create(project_owner=instance, flowsheet_state=flowsheet_state)
31 PinchInputs.objects.create(
32 name="Inputs",
33 project_owner=instance,
34 flowsheet_state=flowsheet_state,
35 )
36 PinchOutputs.objects.create(
37 name="Outputs",
38 project_owner=instance,
39 flowsheet_state=flowsheet_state,
40 )
42 instance.save()
43 return instance