Coverage for backend/django/Economics/formulas/property_state.py: 100%
14 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 core.auxiliary.models.PropertyInfo import PropertyInfo
6def apply_economics_property_state(
7 property_info: PropertyInfo,
8 *,
9 editable: bool,
10 formula_incomplete: bool | None = False,
11 formula_incomplete_reason: str = "",
12) -> None:
13 """Mirror Economics ownership and formula state onto generic PropertyInfo fields."""
15 managed = not editable
16 values = {
17 "managed": managed,
18 "managed_source": "economics" if managed else "",
19 "can_edit": editable,
20 "can_edit_formula": editable,
21 "can_delete": editable,
22 }
23 if formula_incomplete is not None:
24 values.update({
25 "formula_incomplete": formula_incomplete,
26 "formula_incomplete_reason": formula_incomplete_reason if formula_incomplete else "",
27 })
28 changed_fields = []
29 for field_name, value in values.items():
30 if getattr(property_info, field_name) != value:
31 setattr(property_info, field_name, value)
32 changed_fields.append(field_name)
33 if changed_fields:
34 property_info.save(update_fields=changed_fields)