Coverage for backend/django/Economics/studies/models.py: 100%

17 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2026-06-23 21:51 +0000

1from django.db import models 

2 

3from core.managers import AccessControlManager 

4from Economics.shared.model_base import FlowsheetScopedEconomicsModel 

5 

6 

7class EconomicsStudy(FlowsheetScopedEconomicsModel): 

8 same_flowsheet_fields = ("settings_profile",) 

9 

10 flowsheet = models.ForeignKey("core_auxiliary.Flowsheet", on_delete=models.CASCADE, related_name="economics_studies") 

11 settings_profile = models.ForeignKey( 

12 "EconomicsSettingsProfile", 

13 on_delete=models.PROTECT, 

14 related_name="studies", 

15 null=True, 

16 blank=True, 

17 help_text="Flowsheet-scoped settings profile selected by this study.", 

18 ) 

19 name = models.CharField(max_length=128) 

20 description = models.TextField(blank=True) 

21 created_at = models.DateTimeField(auto_now_add=True) 

22 updated_at = models.DateTimeField(auto_now=True) 

23 

24 objects = AccessControlManager() 

25 

26 class Meta: 

27 ordering = ["created_at"] 

28 constraints = [ 

29 models.UniqueConstraint( 

30 fields=["flowsheet", "name"], 

31 name="unique_economics_study_name_per_flowsheet", 

32 ), 

33 ] 

34 

35 def __str__(self): 

36 return self.name