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

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 

6 

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) 

10 

11 created_at = models.DateTimeField(auto_now_add=True) 

12 objects = AccessControlManager() 

13 all_states = AllFlowsheetStatesManager() 

14 

15 

16 class Meta: 

17 ordering = ['created_at'] 

18 

19 @classmethod 

20 def create(cls, groupOwner, flowsheet_state, baseName=None): 

21 """Create the required Pinch input/output shells for one state.""" 

22 

23 name = f'{baseName or groupOwner.simulationObject.componentName} Pinch Analysis' 

24 instance = StreamDataProject.objects.create( 

25 flowsheet_state=flowsheet_state, 

26 name=name, 

27 ) 

28 

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 ) 

41 

42 instance.save() 

43 return instance