From 24f0404c8d668cbbb93ec468ba5252a4292677bb Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Thu, 20 Jul 2023 12:02:50 +0100 Subject: [PATCH] restructuring repo to split out static data build processes --- .idea/Model.iml | 3 ++- .idea/misc.xml | 2 +- backend/app/plan/router.py | 30 ++++++++++++++++++++++++++---- model_data/Property.py | 20 ++++---------------- open_uprn/OpenUprnClient.py | 2 +- open_uprn/app.py | 8 ++++++++ open_uprn/requirements.txt | 7 +++++++ 7 files changed, 49 insertions(+), 23 deletions(-) diff --git a/.idea/Model.iml b/.idea/Model.iml index 3df47e4d..ac61a988 100644 --- a/.idea/Model.iml +++ b/.idea/Model.iml @@ -4,8 +4,9 @@ + - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 2f7532e6..242c02bb 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + diff --git a/backend/app/plan/router.py b/backend/app/plan/router.py index 7644b564..0fd19e41 100644 --- a/backend/app/plan/router.py +++ b/backend/app/plan/router.py @@ -15,6 +15,26 @@ router = APIRouter( responses={404: {"description": "Not found"}} ) +# TODO: Load this data from db +open_uprn_data = [ + {'UPRN': 6032920, 'X_COORDINATE': 535110.0, 'Y_COORDINATE': 181819.0, 'LATITUDE': 51.5191407, + 'LONGITUDE': -0.0540506}, + {'UPRN': 6038625, 'X_COORDINATE': 535374.0, 'Y_COORDINATE': 182784.0, 'LATITUDE': 51.5277492, + 'LONGITUDE': -0.0498772}, + {'UPRN': 34153991, 'X_COORDINATE': 523238.74, 'Y_COORDINATE': 178003.02, 'LATITUDE': 51.4875579, + 'LONGITUDE': -0.226392}, + {'UPRN': 10008299676, 'X_COORDINATE': 533285.0, 'Y_COORDINATE': 184711.0, 'LATITUDE': 51.5455629, + 'LONGITUDE': -0.0792445}, + {'UPRN': 10008299677, 'X_COORDINATE': 533285.0, 'Y_COORDINATE': 184711.0, 'LATITUDE': 51.5455629, + 'LONGITUDE': -0.0792445}, + {'UPRN': 100021039066, 'X_COORDINATE': 535506.0, 'Y_COORDINATE': 185624.0, 'LATITUDE': 51.5532385, + 'LONGITUDE': -0.0468833}, + {'UPRN': 100021226060, 'X_COORDINATE': 529247.0, 'Y_COORDINATE': 187959.0, 'LATITUDE': 51.5756908, + 'LONGITUDE': -0.1362513}, + {'UPRN': 200003489276, 'X_COORDINATE': 533210.0, 'Y_COORDINATE': 179442.0, 'LATITUDE': 51.4982309, + 'LONGITUDE': -0.0823165} +] + @router.post("/trigger") async def trigger_plan(body: PlanTriggerRequest): @@ -36,8 +56,10 @@ async def trigger_plan(body: PlanTriggerRequest): p.search_address_epc() p.set_year_built() - # TODO: get co-ordinates + logger.info("Getting coordinates") + # This is placeholder, until the full dataset is loaded into the database + for p in input_properties: + coordinate_data = [x for x in open_uprn_data if x['UPRN'] == int(p.data['uprn'])][0] + p.set_coordinates(coordinate_data) - logger.info("Reading in EPC data") - - return {"message": "Plan triggered"} + return {"message": "Plan complete"} diff --git a/model_data/Property.py b/model_data/Property.py index 03dcd58b..eff475ef 100644 --- a/model_data/Property.py +++ b/model_data/Property.py @@ -68,24 +68,12 @@ class Property(BaseUtility): self.data = response["rows"][0] - def get_coordinates(self, open_uprn_client): + def set_coordinates(self, coordinates): """ - This method utlises the OpenOprnClient to get the coordinates of the property - The OpenOprnClient interfactes with the Ordinance Survey Open UPRN database to extract - property coordinates. This database holds lookups between UPRN and coordinates. - :param open_uprn_client: Instance of OpenOprnClient. This method expects the client to have already read - the data + This method sets the coordinates of the property, given the open uprn data + :param coordinates: dictionary """ - - if open_uprn_client.data is None: - raise ValueError("OpenUprnClient has not read data") - - self.coordinates = ( - open_uprn_client.data[open_uprn_client.data["UPRN"] == int(self.data["uprn"])] - .to_dict("records")[0] - ) - - self.coordinates = {key.lower(): value for key, value in self.coordinates.items()} + self.coordinates = {key.lower(): value for key, value in coordinates.items()} def get_components(self, cleaner): """ diff --git a/open_uprn/OpenUprnClient.py b/open_uprn/OpenUprnClient.py index 802e7d54..053ba91b 100644 --- a/open_uprn/OpenUprnClient.py +++ b/open_uprn/OpenUprnClient.py @@ -14,7 +14,7 @@ class OpenUprnClient: def __init__(self, path, uprns=None): self.path = path - self.uprns = [int(x) for x in uprns] + self.uprns = [int(x) for x in uprns] if uprns else None self.data = None def read(self): diff --git a/open_uprn/app.py b/open_uprn/app.py index 6ed62c44..a96b8105 100644 --- a/open_uprn/app.py +++ b/open_uprn/app.py @@ -15,4 +15,12 @@ def app(): ) open_uprn_client.read() + uprns = [ + int(x) for x in + ['34153991', '6038625', '100021039066', '100021226060', '10008299676', '10008299677', '6032920', '200003489276'] + ] + + open_uprn_client.data[open_uprn_client.data["UPRN"].isin( + uprns + )].to_dict("records") # TODO: Add a method to write to the database diff --git a/open_uprn/requirements.txt b/open_uprn/requirements.txt index a59c5752..11baa087 100644 --- a/open_uprn/requirements.txt +++ b/open_uprn/requirements.txt @@ -4,3 +4,10 @@ python-dateutil==2.8.2 pytz==2023.3 six==1.16.0 tzdata==2023.3 +click==8.1.6 +joblib==1.3.1 +nltk==3.8.1 +regex==2023.6.3 +textblob==0.17.1 +tqdm==4.65.0 +