mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
69 lines
2.6 KiB
Python
69 lines
2.6 KiB
Python
from recommendations.Costs import Costs
|
|
from recommendations.recommendation_utils import override_costs
|
|
from backend.Property import Property
|
|
|
|
|
|
class SecondaryHeating:
|
|
"""
|
|
This class recommends the removal of the secondary heating system for properties that have a primary heating
|
|
system.
|
|
"""
|
|
|
|
# The list of existing heating systems that are accepted
|
|
ACCEPTED_MAINHEAT_DESCRIPTIONS = ["Boiler and radiators, mains gas"]
|
|
ACCEPTED_SECONDHEAT_DESCRIPTIONS = ["Room heaters, electric"]
|
|
# These are the heaters where works are required to remove them
|
|
FIXED_HEATER_DESCRIPTIONS = ["Room heaters, electric", 'Portable electric heaters (assumed)']
|
|
|
|
def __init__(self, property_instance: Property):
|
|
self.property = property_instance
|
|
self.costs = Costs(self.property)
|
|
|
|
self.recommendation = []
|
|
|
|
def recommend(self, phase: int):
|
|
# Reset
|
|
self.recommendation = []
|
|
|
|
if self.property.main_heating["clean_description"] not in self.ACCEPTED_MAINHEAT_DESCRIPTIONS:
|
|
return
|
|
|
|
# TODO: We need to clean secondary data
|
|
if self.property.data['secondheat-description'] not in self.ACCEPTED_SECONDHEAT_DESCRIPTIONS:
|
|
return
|
|
|
|
if self.property.data['secondheat-description'] in self.FIXED_HEATER_DESCRIPTIONS:
|
|
# We have an associated cost otherwise, there is no cost
|
|
n_rooms = self.property.data['number-habitable-rooms'] - self.property.data['number-heated-rooms']
|
|
else:
|
|
n_rooms = 0
|
|
|
|
costs = self.costs.heater_removal(n_rooms=n_rooms)
|
|
|
|
already_installed = "secondary_heating" in self.property.already_installed
|
|
if already_installed:
|
|
costs = override_costs(costs)
|
|
description = "Secondary heating system has already been removed, no further action required"
|
|
else:
|
|
description = "Remove the secondary heating system"
|
|
|
|
self.recommendation.append(
|
|
{
|
|
"phase": phase,
|
|
"parts": [],
|
|
"type": "secondary_heating",
|
|
"measure_type": "secondary_heating",
|
|
"description": description,
|
|
"starting_u_value": None,
|
|
"new_u_value": None,
|
|
"sap_points": None,
|
|
"already_installed": already_installed,
|
|
**costs,
|
|
"simulation_config": {
|
|
"secondheat_description_ending": "None"
|
|
},
|
|
"description_simulation": {
|
|
"secondheat-description": "None"
|
|
}
|
|
}
|
|
)
|