From f0d3ea3707b261118e08ac1c92759cd3af4024ac Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Fri, 17 Apr 2026 11:19:20 +0000 Subject: [PATCH] add task handler decorator back to handler --- backend/pashub_fetcher/handler/handler.py | 67 +++++++------------ .../local_handler/invoke_local_lambda.py | 3 +- 2 files changed, 28 insertions(+), 42 deletions(-) diff --git a/backend/pashub_fetcher/handler/handler.py b/backend/pashub_fetcher/handler/handler.py index fc28b3c9..60b946c1 100644 --- a/backend/pashub_fetcher/handler/handler.py +++ b/backend/pashub_fetcher/handler/handler.py @@ -1,8 +1,7 @@ from datetime import datetime, timezone -import json import os import re -from typing import Any, Dict, List, Mapping, Optional +from typing import Any, Dict, List, Optional from openpyxl import load_workbook from backend.app.config import get_settings @@ -178,9 +177,9 @@ def process_job( return job_files -def handler(event: Mapping[str, Any], context: Any) -> None: +@task_handler() +def handler(body: Dict[str, Any], context: Any) -> List[str]: logger.info("Received message") - logger.info(f"Number of events: {len(event.get('Records', []))}") settings = get_settings() @@ -196,48 +195,34 @@ def handler(event: Mapping[str, Any], context: Any) -> None: sharepoint_location=DomnaSites.SOCIAL_HOUSING_WAVE_3 ) - saved_file_paths: List[str] = [] + logger.debug("Validating request body") + payload = PashubToAraTriggerRequest.model_validate(body) + logger.debug("Successfully validated request body") - for record in event.get("Records", []): - try: - body_dict = json.loads(record["body"]) - logger.debug("Validating request body") + try: + files: List[str] = process_job( + payload, + pashub_client, + sharepoint_client, + ) + except UnauthorizedError: + logger.warning("Token expired - refreshing") - payload = PashubToAraTriggerRequest.model_validate(body_dict) + pashub_client = get_pashub_client( + pas_hub_email, + pas_hub_password, + ) - logger.debug("Successfully validated request body") + # retry once + files = process_job( + payload, + pashub_client, + sharepoint_client, + ) - try: - files: List[str] = process_job( - payload, - pashub_client, - sharepoint_client, - ) - saved_file_paths.extend(files) + logger.info(f"Saved {len(files)} files") - except UnauthorizedError: - logger.warning("Token expired - refreshing") - - pashub_client = get_pashub_client( - pas_hub_email, - pas_hub_password, - ) - - # retry once - files: List[str] = process_job( - payload, - pashub_client, - sharepoint_client, - ) - saved_file_paths.extend(files) - - except Exception as e: - logger.info("Handler exception") - logger.error(f"Failed to process record: {e}") - - logger.info("Successfully loaded jobs from spreadsheet") - - logger.info(f"Saved {len(saved_file_paths)} files") + return files if __name__ == "__main__": diff --git a/backend/pashub_fetcher/local_handler/invoke_local_lambda.py b/backend/pashub_fetcher/local_handler/invoke_local_lambda.py index 463ef9d8..219446fd 100644 --- a/backend/pashub_fetcher/local_handler/invoke_local_lambda.py +++ b/backend/pashub_fetcher/local_handler/invoke_local_lambda.py @@ -12,7 +12,8 @@ payload = { { "body": json.dumps( { - "uprn": 123456, + "pashub_link": "https://pashub.net/jobs/00000000-0000-0000-0000-000000000000/details", + "uprn": "123456", } ) }