_select_other_files returns non-core evidence files 🟥

This commit is contained in:
Daniel Roth 2026-06-01 15:03:13 +00:00 committed by Jun-te Kim
parent 6cb6c8c756
commit db796747d9
4 changed files with 41 additions and 8 deletions

View file

@ -92,6 +92,12 @@ class PashubClient:
)
return None
def _select_other_files(
self,
files: List[EvidenceFileData],
) -> List[EvidenceFileData]:
raise NotImplementedError
def _select_latest_core_files(
self,
files: List[EvidenceFileData],
@ -106,16 +112,16 @@ class PashubClient:
continue
grouped[core_type].append(file)
latest_files: Dict[CoreFiles, EvidenceFileData] = {}
latest_core_files: Dict[CoreFiles, EvidenceFileData] = {}
for core_type, group in grouped.items():
if core_type == CoreFiles.RETROFIT_DESIGN_DOC and len(group) > 1:
osm_candidates = [f for f in group if "-OSM-" in f.file_name]
group = osm_candidates if osm_candidates else group
latest = max(group, key=lambda f: datetime.fromisoformat(f.created_utc))
latest_files[core_type] = latest
latest_core_files[core_type] = latest
return latest_files
return latest_core_files
def _get_evidence_list(self, job_id: str) -> List[EvidenceFileData]:
url = f"{self.base}/jobs/{job_id}/evidence"

View file

@ -75,14 +75,14 @@ class PashubService:
logger.info(f"No UPRN found for job {job_id}")
try:
job_files: List[str] = active_client.get_core_evidence_files_by_job_id(
core_files: List[str] = active_client.get_core_evidence_files_by_job_id(
job_id
)
except UnauthorizedError:
if active_client is not self._pashub_client:
raise
active_client = self._get_coordination_client()
job_files = active_client.get_core_evidence_files_by_job_id(job_id)
core_files = active_client.get_core_evidence_files_by_job_id(job_id)
if uprn or hubspot_deal_id:
logger.info("Uploading files to s3")
@ -92,7 +92,7 @@ class PashubService:
else FileSourceEnum.COORDINATION_HUB
)
upload_records = self._upload_to_s3_and_update_db(
job_files, uprn, hubspot_deal_id, file_source
core_files, uprn, hubspot_deal_id, file_source
)
self._save_site_notes(upload_records)
@ -101,13 +101,13 @@ class PashubService:
# if request.sharepoint_link:
# self._upload_to_sharepoint(request.sharepoint_link, job_files)
for file_path in job_files:
for file_path in core_files:
try:
os.remove(file_path)
except OSError:
logger.warning(f"Failed to delete temp file {file_path}")
return job_files
return core_files
def _upload_to_s3_and_update_db(
self,

View file

@ -14,6 +14,8 @@ class PashubToAraTriggerRequest(BaseModel):
hubspot_listing_id: Optional[int] = None
hubspot_deal_id: Optional[str] = None
get_other_files: Optional[bool] = False
@property
def pashub_job_id(self) -> str:
match = re.search(r"/jobs/([^/]+)", self.pashub_link)

View file

@ -25,6 +25,31 @@ def make_file(
)
# ---------------------------------------------------------------------------
# _select_other_files
# ---------------------------------------------------------------------------
def test_select_other_files_returns_non_core_files_only() -> None:
# Arrange
client = make_client()
files = [
make_file(file_name="SiteNote_001.pdf"),
make_file(file_name="some_unknown_document.pdf"),
make_file(file_name="another_random_file.docx"),
make_file(file_name="Photopack_002.pdf"),
]
# Act
result = client._select_other_files(files)
# Assert
assert [f.file_name for f in result] == [
"some_unknown_document.pdf",
"another_random_file.docx",
]
# ---------------------------------------------------------------------------
# _select_latest_core_files
# ---------------------------------------------------------------------------