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
« prev ^ index » next coverage.py v7.10.7, created at 2026-07-22 05:22 +0000
1from __future__ import annotations
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
9def refresh_economics_formulas_before_context_load(context: IdaesBuildHookContext) -> None:
10 """Refresh Economics-generated formulas before IDAES loads property values."""
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)
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)