Coverage for backend/core/auxiliary/models/SolveState.py: 100%

20 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-11-06 23:27 +0000

1from django.db import models 

2from core.auxiliary.models.Scenario import Scenario 

3from core.auxiliary.models.Flowsheet import Flowsheet 

4# This class is used by the SolveValue class 

5 

6from core.managers import AccessControlManager 

7class SolveState(models.Model): 

8 """ 

9 This stores a "row" in the MSS/dynamic data table  

10 (i.e a row for a single time step or solve iteration). 

11 """ 

12 # TODO: Rename to DataRow or something similar. See also Expression.py 

13 # Row of the solve state 

14 index = models.IntegerField(db_index=True) 

15 flowsheet = models.ForeignKey(Flowsheet, on_delete=models.CASCADE, related_name="solveStates") 

16 scenario = models.ForeignKey(Scenario, on_delete=models.CASCADE, related_name="solveStates") 

17 

18 created_at = models.DateTimeField(auto_now_add=True) 

19 

20 objects = AccessControlManager() 

21 

22 

23 

24class SolveValue(models.Model): 

25 """ 

26 This stores a "cell" in the MSS/dynamic data table. 

27 No results are ever stored here anymore.  

28 """ 

29 # TODO: Rename to DataCell or something similar. See also Expression.py 

30 flowsheet = models.ForeignKey("Flowsheet", on_delete=models.CASCADE, related_name="SolveValues") 

31 value = models.FloatField() 

32 expression = models.ForeignKey("Expression", on_delete=models.CASCADE, related_name="solveValues", null=True) 

33 solve = models.ForeignKey(SolveState, on_delete=models.CASCADE, related_name="values", null=True) 

34 solve_index = models.IntegerField(null=True, blank=True, default=None) 

35 

36 created_at = models.DateTimeField(auto_now_add=True) 

37 

38 objects = AccessControlManager() 

39 

40 class Meta: 

41 ordering = ['created_at']