section 4 completed

This commit is contained in:
Jun-te Kim 2025-06-10 16:38:20 +00:00
parent 899f194d31
commit 1a03afdd0c
2 changed files with 58 additions and 8 deletions

View file

@ -14,7 +14,7 @@ from etl.transform.conditionReportTypes import (
ExternalElevationGableOne, ExternalElevationGableTwo, ExternalElevationRear, ConservatoryOrOutbuilding,
AccessAndElevations, Hallway, RoomInfo, WindowsInfo, VentilationInfo, LivingRoom, DiningRoom, Kitchen, Rooms,
Utility, WC, Landing, Bedroom, Bathroom, LoftSpace, RoomInRoof, HeatingSystem, GeneralConditionHeatingSystem,
MainHeatingOne, MainHeatingTwo, SecondaryHeating
MainHeatingOne, MainHeatingTwo, SecondaryHeating, HeatingByRoom, Renewables
)
from datetime import datetime
from pprint import pprint
@ -482,6 +482,8 @@ class ConditionReport(SiteNotesExtractor):
_ = self.get_main_heating_one()
_ = self.get_main_heating_two()
_ = self.get_secondary_heating()
_ = self.get_heating_by_room()
_ = self.get_renewables()
pprint(_)
def get_main_heating_one(self):
@ -502,7 +504,53 @@ class ConditionReport(SiteNotesExtractor):
data = self.get_data_between("Secondary Heating", "Heating by room")
return SecondaryHeating(
is_there_a_secondary_heating=True if self.get_next_value(data, "Is there a Secondary Heating?").lower() == "yes" else False,
fuel=self.get_next_value(data, "Fuel")
fuel=self.get_next_value(data, "Fuel"),
electric_heating_type=self.get_next_value_greedy(data, "Type", 2),
gas_heating_type=self.get_x_value(data, "Type", 1),
)
def get_heating_by_room(self):
data = self.get_data_between("Heating by room", "Renewables")
list_of_main_heating_system_by_one = self.get_data_between("Rooms heated by Main System 1:", "Rooms Heated by Main System 2")[1:]
list_of_main_heating_system_by_two = self.get_data_between("Rooms Heated by Main System 2", "Rooms heated by Secondary Heating:")[1:]
list_of_rooms_heated_by_secondary_heating = self.get_data_between("Rooms heated by Secondary Heating:", "Are there any partially heated rooms?")[1:]
are_there_any_partially_heated_rooms = True if self.get_next_value(data, "Are there any partially heated rooms?").lower() == "yes" else False
are_there_any_unheated_rooms = True if self.get_next_value(data, "Are there any unheated rooms?").lower() == "yes" else False
list_of_partially_heated_rooms = self.get_data_between("Are there any partially heated rooms?", "Are there any unheated rooms?")[2:]
list_of_unheated_rooms = self.get_data_between("Are there any unheated rooms?", "Renewables")[2:]
def remove_special_character(lst):
return_lst = []
for i, item in enumerate(lst):
if '\xa0' in item or 'Rooms' in item or len(item) == 1 or item.lower() == "None".lower():
pass
else:
return_lst.append(item)
return return_lst
return HeatingByRoom(
rooms_heated_by_main_system_one=remove_special_character(list_of_main_heating_system_by_one),
rooms_heated_by_main_system_two=remove_special_character(list_of_main_heating_system_by_two),
rooms_heated_by_secondary_heating=remove_special_character(list_of_rooms_heated_by_secondary_heating),
are_there_any_partially_heated_rooms=are_there_any_partially_heated_rooms,
are_there_any_unheated_rooms=are_there_any_unheated_rooms,
list_of_partially_heated_rooms=remove_special_character(list_of_partially_heated_rooms),
unheated_rooms=remove_special_character(list_of_unheated_rooms),
)
def get_renewables(self):
data = self.get_data_between("Renewables", "5. Occupancy Assessment")
return Renewables(
is_there_any_renewable_energy_system_in_place=True if self.get_next_value(data, "Is there any renewable energy system in place?").lower() == "yes" else False,
suitable_roof_orientation_for_solar_pv_water=self.get_next_value(data, "Suitable roof orientation for Solar PV/water:"),
is_there_a_water_tank=True if self.get_next_value(data, "Is there a Water Tank?").lower() == "yes" else False,
type=self.get_next_value(data, "Type"),
size=self.get_next_value(data, "Size"),
tank_location=self.get_next_value(data, "Tank Location"),
is_the_tank_insulated=True if self.get_next_value(data, "Is the tank Insulated") else False,
type_of_insulation=self.get_next_value(data, "Type of Insulation"),
thickness_of_insulation_in_mm=int(self.get_next_value(data, "Thickness of Insulation (mm)")),
)
def get_general_condition_of_heating_system(self):

View file

@ -176,7 +176,8 @@ class GeneralConditionHeatingSystem(BaseModel):
class SecondaryHeating(BaseModel):
is_there_a_secondary_heating: bool
fuel: str
type: str
electric_heating_type: str
gas_heating_type: str
class MainHeatingOne(BaseModel):
as_defined_by: str
@ -187,12 +188,13 @@ class MainHeatingTwo(BaseModel):
is_there_a_main_heating_two: bool
class HeatingByRoom(BaseModel):
rooms_heated_by_main_system_one: str
rooms_heated_by_main_system_two: str
rooms_heated_by_secondary_heating: str
are_there_any_partially_heated_rooms: str
rooms_heated_by_main_system_one: List[str]
rooms_heated_by_main_system_two: List[str]
rooms_heated_by_secondary_heating: List[str]
are_there_any_partially_heated_rooms: bool
partially_heated_rooms: Optional[List[str]] = []
are_there_any_unheated_rooms: bool
unheated_rooms: str
unheated_rooms: List[str]
class Renewables(BaseModel):
is_there_any_renewable_energy_system_in_place: bool