Coverage for backend/django/Economics/idaes_build_hooks.py: 100%

15 statements  

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

1from __future__ import annotations 

2 

3from idaes_factory.build_hooks import IdaesBuildHookContext 

4from Economics.formulas.models import EconomicsLineFormula, EconomicsMetricFormula 

5from Economics.formulas.native_properties.sync import sync_economics_native_properties_for_study 

6from Economics.studies.models import EconomicsStudy 

7 

8 

9def refresh_economics_formulas_before_context_load(context: IdaesBuildHookContext) -> None: 

10 """Refresh Economics-generated formulas before IDAES loads property values.""" 

11 

12 study_ids = _rendered_economics_study_ids(context) 

13 if not study_ids: 

14 return 

15 for study in EconomicsStudy.objects.filter(pk__in=study_ids, flowsheet=context.flowsheet): 

16 sync_economics_native_properties_for_study(study) 

17 

18 

19def _rendered_economics_study_ids(context: IdaesBuildHookContext) -> set[int]: 

20 metric_study_ids = EconomicsMetricFormula.objects.filter( 

21 flowsheet=context.flowsheet, 

22 property_value__isnull=False, 

23 ).values_list("study_id", flat=True).distinct() 

24 line_study_ids = EconomicsLineFormula.objects.filter( 

25 flowsheet=context.flowsheet, 

26 property_value__isnull=False, 

27 ).values_list("study_id", flat=True).distinct() 

28 return set(metric_study_ids) | set(line_study_ids)