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
« prev ^ index » next coverage.py v7.10.7, created at 2026-06-23 21:51 +0000
1from django.db import models
3from core.managers import AccessControlManager
4from Economics.shared.model_base import FlowsheetScopedEconomicsModel
7class EconomicsStudy(FlowsheetScopedEconomicsModel):
8 same_flowsheet_fields = ("settings_profile",)
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)
24 objects = AccessControlManager()
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 ]
35 def __str__(self):
36 return self.name