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
« 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
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)
11 created_at = models.DateTimeField(auto_now_add=True)
12 objects = AccessControlManager()
15 class Meta:
16 ordering = ['created_at']
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)
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)
28 instance.save()
29 return instance