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
« prev ^ index » next coverage.py v7.10.7, created at 2026-06-23 21:51 +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(pk__in=study_ids, flowsheet=context.flowsheet):
16 sync_economics_native_properties_for_study(study)
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)