mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-30 13:10:47 +00:00
rename functions and include typehints
This commit is contained in:
parent
e8b7cfdcec
commit
faf698eb71
4 changed files with 46 additions and 32 deletions
|
|
@ -35,7 +35,7 @@ _CORE_FILE_TO_FILE_TYPE: dict[CoreFiles, str] = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def core_file_for(
|
def get_core_file_type(
|
||||||
filename: str, evidence_category: Optional[str] = None
|
filename: str, evidence_category: Optional[str] = None
|
||||||
) -> Optional[CoreFiles]:
|
) -> Optional[CoreFiles]:
|
||||||
# Identify retrofit design doc using evidence category as the name is possibly unreliable.
|
# Identify retrofit design doc using evidence category as the name is possibly unreliable.
|
||||||
|
|
@ -68,8 +68,8 @@ def core_file_for(
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def file_type_for(filename: str) -> Optional[str]:
|
def get_file_type_string(filename: str) -> Optional[str]:
|
||||||
core_file = core_file_for(filename)
|
core_file = get_core_file_type(filename)
|
||||||
if core_file is None:
|
if core_file is None:
|
||||||
return None
|
return None
|
||||||
return _CORE_FILE_TO_FILE_TYPE[core_file]
|
return _CORE_FILE_TO_FILE_TYPE[core_file]
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,11 @@ from datetime import datetime
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from backend.pashub_fetcher.core_files import CoreFiles, core_file_for
|
from backend.pashub_fetcher.core_files import CoreFiles, get_core_file_type
|
||||||
from backend.pashub_fetcher.evidence_file_data import EvidenceFileData
|
from backend.pashub_fetcher.evidence_file_data import EvidenceFileData
|
||||||
from backend.pashub_fetcher.evidence_metadata import EvidenceMetadata
|
from backend.pashub_fetcher.evidence_metadata import EvidenceMetadata
|
||||||
from utils.logger import setup_logger
|
from utils.logger import setup_logger
|
||||||
|
|
||||||
|
|
||||||
logger = setup_logger()
|
logger = setup_logger()
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -93,7 +92,9 @@ class PashubClient:
|
||||||
grouped: Dict[CoreFiles, List[EvidenceFileData]] = defaultdict(list)
|
grouped: Dict[CoreFiles, List[EvidenceFileData]] = defaultdict(list)
|
||||||
|
|
||||||
for file in files:
|
for file in files:
|
||||||
core_type = core_file_for(file.file_name, file.evidence_category)
|
core_type: Optional[CoreFiles] = get_core_file_type(
|
||||||
|
file.file_name, file.evidence_category
|
||||||
|
)
|
||||||
if not core_type:
|
if not core_type:
|
||||||
continue
|
continue
|
||||||
grouped[core_type].append(file)
|
grouped[core_type].append(file)
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ from backend.app.db.models.uploaded_file import (
|
||||||
)
|
)
|
||||||
from backend.documents_parser.db_writer import save_epc_property_data
|
from backend.documents_parser.db_writer import save_epc_property_data
|
||||||
from backend.documents_parser.parser import parse_site_notes_pdf
|
from backend.documents_parser.parser import parse_site_notes_pdf
|
||||||
from backend.pashub_fetcher.core_files import file_type_for
|
from backend.pashub_fetcher.core_files import get_file_type_string
|
||||||
from backend.pashub_fetcher.pashub_client import PashubClient
|
from backend.pashub_fetcher.pashub_client import PashubClient
|
||||||
from backend.pashub_fetcher.pashub_to_ara_trigger_request import (
|
from backend.pashub_fetcher.pashub_to_ara_trigger_request import (
|
||||||
PashubToAraTriggerRequest,
|
PashubToAraTriggerRequest,
|
||||||
|
|
@ -109,7 +109,7 @@ class PashubService:
|
||||||
uprn=int(uprn) if uprn else None,
|
uprn=int(uprn) if uprn else None,
|
||||||
hubspot_deal_id=hubspot_deal_id,
|
hubspot_deal_id=hubspot_deal_id,
|
||||||
file_source=FileSourceEnum.PAS_HUB.value,
|
file_source=FileSourceEnum.PAS_HUB.value,
|
||||||
file_type=file_type_for(filename),
|
file_type=get_file_type_string(filename),
|
||||||
)
|
)
|
||||||
file_paths.append(file_path)
|
file_paths.append(file_path)
|
||||||
uploaded_files.append(uploaded_file)
|
uploaded_files.append(uploaded_file)
|
||||||
|
|
|
||||||
|
|
@ -1,53 +1,60 @@
|
||||||
from backend.pashub_fetcher.core_files import CoreFiles, core_file_for, file_type_for
|
from backend.pashub_fetcher.core_files import (
|
||||||
|
CoreFiles,
|
||||||
|
get_core_file_type,
|
||||||
|
get_file_type_string,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_file_type_for_photopack():
|
def test_file_type_for_photopack():
|
||||||
assert file_type_for("Photopack_123456_V1.pdf") == "photo_pack"
|
assert get_file_type_string("Photopack_123456_V1.pdf") == "photo_pack"
|
||||||
|
|
||||||
|
|
||||||
def test_file_type_for_sitenote():
|
def test_file_type_for_sitenote():
|
||||||
assert file_type_for("SiteNote_123456_V1.pdf") == "site_note"
|
assert get_file_type_string("SiteNote_123456_V1.pdf") == "site_note"
|
||||||
|
|
||||||
|
|
||||||
def test_file_type_for_rdsap_sitenote():
|
def test_file_type_for_rdsap_sitenote():
|
||||||
assert (
|
assert (
|
||||||
file_type_for("RdSAP_SiteNote_9510890_V1_Assessmet.pdf") == "rd_sap_site_note"
|
get_file_type_string("RdSAP_SiteNote_9510890_V1_Assessmet.pdf")
|
||||||
|
== "rd_sap_site_note"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_file_type_for_pas2023_ventilation():
|
def test_file_type_for_pas2023_ventilation():
|
||||||
assert (
|
assert (
|
||||||
file_type_for("PAS 2023 Ventilation Assessment Report_123456.pdf")
|
get_file_type_string("PAS 2023 Ventilation Assessment Report_123456.pdf")
|
||||||
== "pas_2023_ventilation"
|
== "pas_2023_ventilation"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_file_type_for_pas2023_condition():
|
def test_file_type_for_pas2023_condition():
|
||||||
assert (
|
assert (
|
||||||
file_type_for("PAS 2023 Condition Report_123456.pdf") == "pas_2023_condition"
|
get_file_type_string("PAS 2023 Condition Report_123456.pdf")
|
||||||
|
== "pas_2023_condition"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_file_type_for_pas_significance():
|
def test_file_type_for_pas_significance():
|
||||||
assert file_type_for("PAS Significance_123456.pdf") == "pas_significance"
|
assert get_file_type_string("PAS Significance_123456.pdf") == "pas_significance"
|
||||||
|
|
||||||
|
|
||||||
def test_file_type_for_par_photopack():
|
def test_file_type_for_par_photopack():
|
||||||
assert (
|
assert (
|
||||||
file_type_for("PAR Photo Pack_95101890_V2_Assessment.pdf") == "par_photo_pack"
|
get_file_type_string("PAR Photo Pack_95101890_V2_Assessment.pdf")
|
||||||
|
== "par_photo_pack"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_file_type_for_pas2023_property():
|
def test_file_type_for_pas2023_property():
|
||||||
assert (
|
assert (
|
||||||
file_type_for("PAS 2023 Property Assessment Report_123456.pdf")
|
get_file_type_string("PAS 2023 Property Assessment Report_123456.pdf")
|
||||||
== "pas_2023_property"
|
== "pas_2023_property"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_file_type_for_pas2023_occupancy():
|
def test_file_type_for_pas2023_occupancy():
|
||||||
assert (
|
assert (
|
||||||
file_type_for("PAS 2023 Occupancy Assessment Report_123456.pdf")
|
get_file_type_string("PAS 2023 Occupancy Assessment Report_123456.pdf")
|
||||||
== "pas_2023_occupancy"
|
== "pas_2023_occupancy"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -55,7 +62,7 @@ def test_file_type_for_pas2023_occupancy():
|
||||||
def test_file_type_for_improvement_option_evaluation():
|
def test_file_type_for_improvement_option_evaluation():
|
||||||
# filename: "{job_id} - {postcode} - Improvement Option Evaluation.pdf"
|
# filename: "{job_id} - {postcode} - Improvement Option Evaluation.pdf"
|
||||||
assert (
|
assert (
|
||||||
file_type_for("6000802 - NG4 4HD - Improvement Option Evaluation.pdf")
|
get_file_type_string("6000802 - NG4 4HD - Improvement Option Evaluation.pdf")
|
||||||
== "improvement_option_evaluation"
|
== "improvement_option_evaluation"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -63,18 +70,20 @@ def test_file_type_for_improvement_option_evaluation():
|
||||||
def test_file_type_for_medium_term_improvement_plan():
|
def test_file_type_for_medium_term_improvement_plan():
|
||||||
# filename: "{job_id} - {postcode} - Medium Term Improvement Plan IOE.pdf"
|
# filename: "{job_id} - {postcode} - Medium Term Improvement Plan IOE.pdf"
|
||||||
assert (
|
assert (
|
||||||
file_type_for("60800802 - NG4 4HD - Medium Term Improvement Plan IOE.pdf")
|
get_file_type_string(
|
||||||
|
"60800802 - NG4 4HD - Medium Term Improvement Plan IOE.pdf"
|
||||||
|
)
|
||||||
== "medium_term_improvement_plan"
|
== "medium_term_improvement_plan"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_file_type_for_retrofit_design_doc():
|
def test_file_type_for_retrofit_design_doc():
|
||||||
assert (
|
assert (
|
||||||
file_type_for("2512-OSM-H21M900-XX-DR-N-A_Lord Nelson Street 018.pdf")
|
get_file_type_string("2512-OSM-H21M900-XX-DR-N-A_Lord Nelson Street 018.pdf")
|
||||||
== "retrofit_design_doc"
|
== "retrofit_design_doc"
|
||||||
)
|
)
|
||||||
assert (
|
assert (
|
||||||
file_type_for("2603-OSM-B06M901-XX-DR-N-A_Alvaston Walk 022.pdf")
|
get_file_type_string("2603-OSM-B06M901-XX-DR-N-A_Alvaston Walk 022.pdf")
|
||||||
== "retrofit_design_doc"
|
== "retrofit_design_doc"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -89,7 +98,7 @@ def test_core_file_for_evidence_category_match_is_case_insensitive() -> None:
|
||||||
filename = "2512-OSM-H21M900-XX-DR-N-A_Lord Nelson Street 018.pdf"
|
filename = "2512-OSM-H21M900-XX-DR-N-A_Lord Nelson Street 018.pdf"
|
||||||
|
|
||||||
# Act
|
# Act
|
||||||
result = core_file_for(filename, evidence_category="Retrofit Design")
|
result = get_core_file_type(filename, evidence_category="Retrofit Design")
|
||||||
|
|
||||||
# Assert
|
# Assert
|
||||||
assert result == CoreFiles.RETROFIT_DESIGN_DOC
|
assert result == CoreFiles.RETROFIT_DESIGN_DOC
|
||||||
|
|
@ -100,7 +109,7 @@ def test_core_file_for_evidence_category_returns_retrofit_design_doc() -> None:
|
||||||
filename = "2512-OSM-H21M900-XX-DR-N-A_Lord Nelson Street 018.pdf"
|
filename = "2512-OSM-H21M900-XX-DR-N-A_Lord Nelson Street 018.pdf"
|
||||||
|
|
||||||
# Act
|
# Act
|
||||||
result = core_file_for(filename, evidence_category="retrofit design")
|
result = get_core_file_type(filename, evidence_category="retrofit design")
|
||||||
|
|
||||||
# Assert
|
# Assert
|
||||||
assert result == CoreFiles.RETROFIT_DESIGN_DOC
|
assert result == CoreFiles.RETROFIT_DESIGN_DOC
|
||||||
|
|
@ -111,7 +120,7 @@ def test_core_file_for_ioe_substring_returns_improvement_option_evaluation() ->
|
||||||
filename = "6000802 - NG4 4HD - Improvement Option Evaluation.pdf"
|
filename = "6000802 - NG4 4HD - Improvement Option Evaluation.pdf"
|
||||||
|
|
||||||
# Act
|
# Act
|
||||||
result = core_file_for(filename)
|
result = get_core_file_type(filename)
|
||||||
|
|
||||||
# Assert
|
# Assert
|
||||||
assert result == CoreFiles.IMPROVEMENT_OPTION_EVALUATION
|
assert result == CoreFiles.IMPROVEMENT_OPTION_EVALUATION
|
||||||
|
|
@ -122,18 +131,20 @@ def test_core_file_for_mtip_substring_returns_medium_term_improvement_plan() ->
|
||||||
filename = "60800802 - NG4 4HD - Medium Term Improvement Plan IOE.pdf"
|
filename = "60800802 - NG4 4HD - Medium Term Improvement Plan IOE.pdf"
|
||||||
|
|
||||||
# Act
|
# Act
|
||||||
result = core_file_for(filename)
|
result = get_core_file_type(filename)
|
||||||
|
|
||||||
# Assert
|
# Assert
|
||||||
assert result == CoreFiles.MEDIUM_TERM_IMPROVEMENT_PLAN
|
assert result == CoreFiles.MEDIUM_TERM_IMPROVEMENT_PLAN
|
||||||
|
|
||||||
|
|
||||||
def test_core_file_for_osm_pattern_returns_retrofit_design_doc_without_evidence_category() -> None:
|
def test_core_file_for_osm_pattern_returns_retrofit_design_doc_without_evidence_category() -> (
|
||||||
|
None
|
||||||
|
):
|
||||||
# Arrange
|
# Arrange
|
||||||
filename = "2512-OSM-H21M900-XX-DR-N-A_Lord Nelson Street 018.pdf"
|
filename = "2512-OSM-H21M900-XX-DR-N-A_Lord Nelson Street 018.pdf"
|
||||||
|
|
||||||
# Act
|
# Act
|
||||||
result = core_file_for(filename)
|
result = get_core_file_type(filename)
|
||||||
|
|
||||||
# Assert
|
# Assert
|
||||||
assert result == CoreFiles.RETROFIT_DESIGN_DOC
|
assert result == CoreFiles.RETROFIT_DESIGN_DOC
|
||||||
|
|
@ -144,7 +155,7 @@ def test_core_file_for_prefix_returns_photopack() -> None:
|
||||||
filename = "Photopack_123456_V1.pdf"
|
filename = "Photopack_123456_V1.pdf"
|
||||||
|
|
||||||
# Act
|
# Act
|
||||||
result = core_file_for(filename)
|
result = get_core_file_type(filename)
|
||||||
|
|
||||||
# Assert
|
# Assert
|
||||||
assert result == CoreFiles.PHOTOPACK
|
assert result == CoreFiles.PHOTOPACK
|
||||||
|
|
@ -155,18 +166,20 @@ def test_core_file_for_unknown_filename_returns_none() -> None:
|
||||||
filename = "unknown_document_123.pdf"
|
filename = "unknown_document_123.pdf"
|
||||||
|
|
||||||
# Act
|
# Act
|
||||||
result = core_file_for(filename)
|
result = get_core_file_type(filename)
|
||||||
|
|
||||||
# Assert
|
# Assert
|
||||||
assert result is None
|
assert result is None
|
||||||
|
|
||||||
|
|
||||||
def test_core_file_for_osm_fallback_does_not_fire_when_evidence_category_present() -> None:
|
def test_core_file_for_osm_fallback_does_not_fire_when_evidence_category_present() -> (
|
||||||
|
None
|
||||||
|
):
|
||||||
# Arrange — OSM+DR-N-A filename but evidence_category is something other than retrofit design
|
# Arrange — OSM+DR-N-A filename but evidence_category is something other than retrofit design
|
||||||
filename = "2512-OSM-H21M900-XX-DR-N-A_Lord Nelson Street 018.pdf"
|
filename = "2512-OSM-H21M900-XX-DR-N-A_Lord Nelson Street 018.pdf"
|
||||||
|
|
||||||
# Act
|
# Act
|
||||||
result = core_file_for(filename, evidence_category="some other category")
|
result = get_core_file_type(filename, evidence_category="some other category")
|
||||||
|
|
||||||
# Assert
|
# Assert
|
||||||
assert result is None
|
assert result is None
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue