compelted section 2

This commit is contained in:
Jun-te Kim 2025-06-09 10:58:47 +00:00
parent 2b618e49ee
commit 23e97789f1
2 changed files with 98 additions and 7 deletions

View file

@ -10,7 +10,8 @@ from etl.transform.preSiteNoteTypes import (
)
from etl.transform.conditionReportTypes import (
ConditionReport, AssessorDetails, InspectionAndProject, TheProperty,
MainElevation, Elevation, ElevationInfo
MainElevation, Elevation, ElevationInfo, PropertyAccess, ExternalElevation, ExternalElevationFront,
ExternalElevationGableOne, ExternalElevationGableTwo, ExternalElevationRear, ConservatoryOrOutbuilding
)
from datetime import datetime
from pprint import pprint
@ -24,6 +25,11 @@ class SiteNotesExtractor():
except IndexError:
return None # Return None if the value does not occur twice
def get_x_value(self, lst, value, x=1):
index = self.get_x_occurance(lst, value, x)
return lst[index+1]
def get_next_value(self, lst, value, avoid=[]):
get_value = lambda key: None if lst[lst.index(value) + 1] in avoid else lst[lst.index(key) + 1]
return get_value(value)
@ -158,11 +164,96 @@ class ConditionReport(SiteNotesExtractor):
)
def get_section_2(self):
self.get_property_access()
_ = self.get_property_access()
_,_,_,_ = self.get_external_elevation()
self.get_conservatory_or_outbuilding()
def get_property_access(self):
pprint(self.raw_data)
pass
data = self.get_data_between("2.1 Property Access", "2.2 External Elevations")
property_access = PropertyAccess(
are_there_any_road_restriction_in_the_locality=True if self.get_next_value(data, "locality?").lower() == "yes" else False,
is_on_street_parking_available=True if self.get_next_value(data, "Is on-street parking available?").lower() == "yes" else False,
are_there_any_overhead_wires_or_cables=True if self.get_next_value(data, "Are there any overhead wires or cables?") == "yes" else False,
is_the_access_gated=True if self.get_next_value(data, "Is the access gated?").lower() == "yes" else False,
is_there_restricted_space_for_contractors_to_access_the_wall_area=True if self.get_next_value(data, "area?").lower() == "yes" else False,
is_there_restricted_space_for_contractors_to_access_the_roof_area=True if self.get_x_value(data, "area?", 1).lower() == "yes" else False,
is_there_more_than_1_point_5_meters_in_width_to_fence_or_neighbouring_boundary_along_the_full_gable_elevation=True if self.get_next_value(data, "boundary along the full gable elevation?").lower() == "yes" else False,
is_access_to_the_rear_provided_by_use_of_a_ginnel=True if self.get_next_value(data, "Is access to the rear provided by use of a ginnel?").lower() == "yes" else False,
is_access_to_the_rear_provided_by_use_of_a_secured_alleyway=True if self.get_next_value(data, "Is access to the rear provided by use of a secured alleyway?").lower() == "yes" else False,
)
return property_access
def get_external_elevation(self):
# Front
data = self.get_data_between("2.2.1. External Elevation - Front", '2.2.2. External Elevation - Gable 1')
front = ExternalElevation(
structural_defects_of_elevation=self.get_next_value(data, "Structural defects of elevation"),
does_any_structural_defect_need_resolving_before_retrofit=True if self.get_next_value(data,"Does any structural defect need resolving before retrofit?").lower() == "yes" else False,
are_there_any_signs_of_water_penetration_caused_by_failed_rainwater_goods_or_pipework=True if self.get_next_value(data, "rainwater goods or pipework?").lower() == "yes" else False,
are_there_any_visible_signs_of_movement=True if self.get_next_value(data, "Are there any visible signs of movement?").lower() == "yes" else False,
are_there_any_visible_signs_of_cracking_to_the_existing_external_finish=True if self.get_next_value(data, "external finish?").lower() == "yes" else False,
)
# Gable 1
data = self.get_data_between("2.2.2. External Elevation - Gable 1", "2.2.3. External Elevation - Rear")
state = True if self.get_next_value(data, "cracking)").lower() == "yes" else False
if state:
gable_one = ExternalElevationGableOne(
do_all_answers_for_the_front_elevation_apply_to_this_wall=state
)
else:
gable_one_elevation = ExternalElevation(
structural_defects_of_elevation=self.get_next_value(data, "Structural defects of elevation"),
does_any_structural_defect_need_resolving_before_retrofit=True if self.get_next_value(data,"Does any structural defect need resolving before retrofit?").lower() == "yes" else False,
are_there_any_signs_of_water_penetration_caused_by_failed_rainwater_goods_or_pipework=True if self.get_next_value(data, "rainwater goods or pipework?").lower() == "yes" else False,
are_there_any_visible_signs_of_movement=True if self.get_next_value(data, "Are there any visible signs of movement?").lower() == "yes" else False,
are_there_any_visible_signs_of_cracking_to_the_existing_external_finish=True if self.get_next_value(data, "external finish?").lower() == "yes" else False,
)
gable_one = ExternalElevationGableOne(
do_all_answers_for_the_front_elevation_apply_to_this_wall=state,
external_elevation=gable_one_elevation
)
# Rear
data = self.get_data_between("2.2.3. External Elevation - Rear", "2.2.4. External Elevation - Gable 2")
state = True if self.get_next_value(data, "cracking)").lower() == "yes" else False
if state:
rear = ExternalElevationRear(do_all_answers_for_the_front_elevation_apply_to_this_wall=state)
else:
elevation = ExternalElevation(
structural_defects_of_elevation=self.get_next_value(data, "Structural defects of elevation"),
does_any_structural_defect_need_resolving_before_retrofit=True if self.get_next_value(data,"Does any structural defect need resolving before retrofit?").lower() == "yes" else False,
are_there_any_signs_of_water_penetration_caused_by_failed_rainwater_goods_or_pipework=True if self.get_next_value(data, "rainwater goods or pipework?").lower() == "yes" else False,
are_there_any_visible_signs_of_movement=True if self.get_next_value(data, "Are there any visible signs of movement?").lower() == "yes" else False,
are_there_any_visible_signs_of_cracking_to_the_existing_external_finish=True if self.get_next_value(data, "external finish?").lower() == "yes" else False,
)
rear = ExternalElevationRear(
do_all_answers_for_the_front_elevation_apply_to_this_wall=state,
external_elevation=elevation
)
# Gable 2
data = self.get_data_between("2.2.4. External Elevation - Gable 2", "2.3. Conservatory or Outbuilding")
pprint(self.raw_data)
state = True if self.get_next_value(data, "Is there a 4th external elevation?").lower() == "yes" else False
if state is False:
gable_two = ExternalElevationGableTwo(is_there_a_fourth_external_elevation=state)
else:
gable_two_elevation = ExternalElevation(
structural_defects_of_elevation=self.get_next_value(data, "Structural defects of elevation"),
does_any_structural_defect_need_resolving_before_retrofit=True if self.get_next_value(data,"Does any structural defect need resolving before retrofit?").lower() == "yes" else False,
are_there_any_signs_of_water_penetration_caused_by_failed_rainwater_goods_or_pipework=True if self.get_next_value(data, "rainwater goods or pipework?").lower() == "yes" else False,
are_there_any_visible_signs_of_movement=True if self.get_next_value(data, "Are there any visible signs of movement?").lower() == "yes" else False,
are_there_any_visible_signs_of_cracking_to_the_existing_external_finish=True if self.get_next_value(data, "external finish?").lower() == "yes" else False,
)
gable_two = ExternalElevationGableTwo(
is_there_a_fourth_external_elevation=state,
external_elevation=gable_two_elevation
)
return front, gable_one, rear, gable_two
def get_conservatory_or_outbuilding(self):
data = self.get_data_between("2.3. Conservatory or Outbuilding", "3. Rooms")
class QuidosSiteNotesExtractor(SiteNotesExtractor):

View file

@ -66,15 +66,15 @@ class ExternalElevationFront(BaseModel):
class ExternalElevationGableOne(BaseModel):
do_all_answers_for_the_front_elevation_apply_to_this_wall: bool
external_elevation: Optional[ExternalElevation]
external_elevation: Optional[ExternalElevation] = None
class ExternalElevationRear(BaseModel):
do_all_answers_for_the_front_elevation_apply_to_this_wall: bool
external_elevation: Optional[ExternalElevation]
external_elevation: Optional[ExternalElevation] = None
class ExternalElevationGableTwo(BaseModel):
is_there_a_fourth_external_elevation: bool
external_elevation: Optional[ExternalElevation]
external_elevation: Optional[ExternalElevation] = None
class ConservatoryOrOutbuilding(BaseModel):
is_there_a_conservatory: bool