From 33482b65042b467001a22fef330bea53c8dd9779 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Thu, 5 Sep 2024 16:11:10 +0100 Subject: [PATCH] adding non-invasive recommendations for iwi --- recommendations/WallRecommendations.py | 28 ++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/recommendations/WallRecommendations.py b/recommendations/WallRecommendations.py index d78d74a4..a0c71860 100644 --- a/recommendations/WallRecommendations.py +++ b/recommendations/WallRecommendations.py @@ -454,6 +454,16 @@ class WallRecommendations(Definitions): lowest_selected_u_value = None recommendations = [] + + iwi_non_invasive_recommendations = next( + (r for r in self.property.non_invasive_recommendations if r["type"] == "internal_wall_insulation"), {} + ) + ewi_non_invasive_recommendations = next( + (r for r in self.property.non_invasive_recommendations if r["type"] == "external_wall_insulation"), {} + ) + if ewi_non_invasive_recommendations: + raise NotImplementedError("Implement ewi non-invasive recommendations") + for _, insulation_material_group in insulation_materials.groupby("description"): for _, material in insulation_material_group.iterrows(): @@ -486,6 +496,15 @@ class WallRecommendations(Definitions): ) if material["type"] == "internal_wall_insulation": + + if iwi_non_invasive_recommendations.get("cost") is not None: + raise NotImplementedError( + "Not handled passing costs from non-invasive recommendations for iwi" + ) + + sap_points = iwi_non_invasive_recommendations.get("sap_points", None) + survey = iwi_non_invasive_recommendations.get("survey", False) + cost_result = self.costs.internal_wall_insulation( wall_area=self.property.insulation_wall_area, material=material.to_dict(), @@ -503,6 +522,10 @@ class WallRecommendations(Definitions): ) elif material["type"] == "external_wall_insulation": + + sap_points = ewi_non_invasive_recommendations.get("sap_points", None) + survey = ewi_non_invasive_recommendations.get("survey", False) + cost_result = self.costs.external_wall_insulation( wall_area=self.property.insulation_wall_area, material=material.to_dict(), @@ -553,13 +576,14 @@ class WallRecommendations(Definitions): "starting_u_value": u_value, "new_u_value": new_u_value, "already_installed": already_installed, - "sap_points": None, + "sap_points": sap_points, "simulation_config": simulation_config, "description_simulation": { "walls-description": new_description, "walls-energy-eff": simulation_config["walls_energy_eff_ending"] }, - **cost_result + **cost_result, + "survey": survey } )