Coverage for backend/PinchAnalysis/models/StreamDataProject.py: 100%

21 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-11-06 23:27 +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 

6 

7class StreamDataProject(models.Model): 

8 flowsheet = models.OneToOneField("core_auxiliary.Flowsheet", on_delete=models.CASCADE, related_name="StreamDataProject") 

9 name = models.CharField(max_length=32, default="Pinch Project", blank=True, null=True) 

10 

11 created_at = models.DateTimeField(auto_now_add=True) 

12 objects = AccessControlManager() 

13 

14 

15 class Meta: 

16 ordering = ['created_at'] 

17 

18 @classmethod 

19 def create(cls, groupOwner, flowsheet, baseName=None): 

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

21 instance = StreamDataProject.objects.create(flowsheet=flowsheet, name=name) 

22 

23 # Create Options and set for Pinch Analysis 

24 MainOptions.create(project_owner=instance, flowsheet=flowsheet) 

25 PinchInputs.objects.create(name="Inputs", project_owner=instance, flowsheet=flowsheet) 

26 PinchOutputs.objects.create(name="Outputs", project_owner=instance, flowsheet=flowsheet) 

27 

28 instance.save() 

29 return instance