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

15 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2026-07-22 05:22 +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( 

16 pk__in=study_ids, 

17 flowsheet_state=context.flowsheet.current_state, 

18 ): 

19 sync_economics_native_properties_for_study(study) 

20 

21 

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

23 metric_study_ids = EconomicsMetricFormula.objects.filter( 

24 flowsheet_state=context.flowsheet.current_state, 

25 property_value__isnull=False, 

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

27 line_study_ids = EconomicsLineFormula.objects.filter( 

28 flowsheet_state=context.flowsheet.current_state, 

29 property_value__isnull=False, 

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

31 return set(metric_study_ids) | set(line_study_ids)