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

16 statements  

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

1from __future__ import annotations 

2from django.db import models 

3from typing import TYPE_CHECKING 

4from core.managers import AccessControlManager 

5if TYPE_CHECKING: 

6 from .PropertyInfo import PropertyInfo 

7 from .PropertyValue import PropertyValue 

8 from .Flowsheet import Flowsheet 

9 

10class ControlValue(models.Model): 

11 flowsheet = models.ForeignKey("Flowsheet", on_delete=models.CASCADE, related_name="controlValues") 

12 manipulated = models.OneToOneField("PropertyValue", on_delete=models.CASCADE, related_name="controlManipulated", null=True) 

13 setPoint = models.OneToOneField("PropertyValue", on_delete=models.CASCADE, related_name="controlSetPoint", null=True) 

14 

15 created_at = models.DateTimeField(auto_now_add=True) 

16 

17 objects = AccessControlManager() 

18 

19 

20 

21 @classmethod 

22 def create(cls, manipulated: PropertyValue, setPoint: PropertyValue, flowsheet: Flowsheet) -> "ControlValue": 

23 instance = cls.objects.create(manipulated=manipulated, setPoint=setPoint, flowsheet=flowsheet) 

24 return instance 

25 

26 def delete(self) -> None: 

27 super().delete()