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

1from __future__ import annotations 

2 

3from core.auxiliary.models.PropertyInfo import PropertyInfo 

4 

5 

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.""" 

14 

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)