Got the bigger portfolio working

This commit is contained in:
Khalim Conn-Kowlessar 2023-10-11 20:42:04 +08:00
parent fec6fab42a
commit 7c943b8c1c
6 changed files with 33 additions and 8 deletions

2
.idea/Model.iml generated
View file

@ -7,7 +7,7 @@
<sourceFolder url="file://$MODULE_DIR$/open_uprn" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/open_uprn" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/recommendations" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/recommendations" isTestSource="false" />
</content> </content>
<orderEntry type="jdk" jdkName="Python 3.10 (model_data)" jdkType="Python SDK" /> <orderEntry type="jdk" jdkName="Python 3.10 (backend)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
<component name="PyNamespacePackagesService"> <component name="PyNamespacePackagesService">

2
.idea/misc.xml generated
View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (model_data)" project-jdk-type="Python SDK" /> <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (backend)" project-jdk-type="Python SDK" />
<component name="PythonCompatibilityInspectionAdvertiser"> <component name="PythonCompatibilityInspectionAdvertiser">
<option name="version" value="3" /> <option name="version" value="3" />
</component> </component>

View file

@ -102,7 +102,7 @@ class Property(Definitions):
if len(response["rows"]) > 1: if len(response["rows"]) > 1:
newest_response = [ newest_response = [
r for r in response["rows"] if r for r in response["rows"] if
r["inspection-date"] == max([x["inspection-date"] for x in response["rows"]]) r["lodgement-datetime"] == max([x["lodgement-datetime"] for x in response["rows"]])
] ]
if len(newest_response) > 1: if len(newest_response) > 1:
raise Exception("More than one result found for this address - investigate me") raise Exception("More than one result found for this address - investigate me")
@ -113,7 +113,12 @@ class Property(Definitions):
response["rows"] = newest_response response["rows"] = newest_response
self.data = response["rows"][0] self.data = response["rows"][0]
self.uprn = int(self.data["uprn"]) # For the moment, if we don't have a UPRN, we don't do anything about it, however we'll handle this in
# the future by using the Ordnance Survey places API
if not self.data["uprn"]:
logger.warning("We do not have a UPRN for this property")
else:
self.uprn = int(self.data["uprn"])
def set_coordinates(self, coordinates): def set_coordinates(self, coordinates):
""" """
@ -482,7 +487,12 @@ class Property(Definitions):
""" """
if self.uprn is None: if self.uprn is None:
raise ValueError("URPN is not set, run search_address_epc") logger.warning("We do not have a UPRN for this property - this needs to be implemented")
self.in_conservation_area = False
self.is_listed = False
self.is_heritage = False
self.restricted_measures = True
return
# We get the file name for the uprn # We get the file name for the uprn
filtered_df = uprn_filenames[(uprn_filenames['lower'] <= self.uprn) & (uprn_filenames['upper'] >= self.uprn)] filtered_df = uprn_filenames[(uprn_filenames['lower'] <= self.uprn) & (uprn_filenames['upper'] >= self.uprn)]
@ -549,8 +559,10 @@ class Property(Definitions):
if self.data["property-type"] == "House": if self.data["property-type"] == "House":
self.number_of_floors = estimate_floors(self.floor_area, self.number_of_rooms) self.number_of_floors = estimate_floors(self.floor_area, self.number_of_rooms)
elif self.data["property-type"] == "Flat": elif self.data["property-type"] in ["Flat", "Bungalow"]:
self.number_of_floors = 1 self.number_of_floors = 1
elif self.data["property-type"] == "Maisonette":
self.number_of_floors = 2
else: else:
raise NotImplementedError("Implement me") raise NotImplementedError("Implement me")

View file

@ -156,6 +156,10 @@ async def trigger_plan(body: PlanTriggerRequest):
# Finally, we'll prepare data for predicting the impact on SAP # Finally, we'll prepare data for predicting the impact on SAP
data_processor = DataProcessor(None, newdata=True) data_processor = DataProcessor(None, newdata=True)
data_processor.insert_data(pd.DataFrame([p.get_model_data()])) data_processor.insert_data(pd.DataFrame([p.get_model_data()]))
# TODO: Temp
if data_processor.data["UPRN"].values[0] == "":
data_processor.data["UPRN"] = 0
data_processor.pre_process() data_processor.pre_process()
starting_epc_data = data_processor.get_component_features(suffix="_STARTING") starting_epc_data = data_processor.get_component_features(suffix="_STARTING")

View file

@ -48,8 +48,11 @@ def app():
+ a_data["rows"] + a_data["rows"]
) )
# TODO: For the moment, don't use park homes
final_csv_data = pd.DataFrame( final_csv_data = pd.DataFrame(
[{"address": x["address"], "postcode": x["postcode"], "Notes": None} for x in final_data] [{"address": x["address"], "postcode": x["postcode"], "Notes": None} for x
in final_data if
x["property-type"] not in ["Park home"]]
) )
final_csv_data = pd.concat([starting_csv, final_csv_data]).reset_index(drop=True) final_csv_data = pd.concat([starting_csv, final_csv_data]).reset_index(drop=True)
@ -69,3 +72,4 @@ def app():
"goal_value": "B", "goal_value": "B",
"trigger_file_path": filename "trigger_file_path": filename
} }
print(body)

View file

@ -10,6 +10,9 @@ from recommendations.recommendation_utils import (
get_recommended_part, get_wall_u_value get_recommended_part, get_wall_u_value
) )
from recommendations.config import PARTIALLY_FILLED_PERCENTAGE_ASSUMPTION from recommendations.config import PARTIALLY_FILLED_PERCENTAGE_ASSUMPTION
from utils.logger import setup_logger
logger = setup_logger()
class WallRecommendations(Definitions): class WallRecommendations(Definitions):
@ -125,7 +128,9 @@ class WallRecommendations(Definitions):
return return
raise NotImplementedError("Not implemented yet") logger.error("Not implemented yet")
return
# NotImplementedError("Not implemented yet")
def find_cavity_insulation(self, u_value, insulation_thickness): def find_cavity_insulation(self, u_value, insulation_thickness):
""" """