From 56ccf4910f52fa095afa80315f02d12ec008dc74 Mon Sep 17 00:00:00 2001 From: Tim Sutton Date: Mon, 13 Jan 2025 17:53:35 +0000 Subject: [PATCH] Message to popup when ORS key is outdated/not working Fixes #708 --- .../multi_buffer_distances_workflow.py | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/geest/core/workflows/multi_buffer_distances_workflow.py b/geest/core/workflows/multi_buffer_distances_workflow.py index 0409c0b6..69da09e6 100644 --- a/geest/core/workflows/multi_buffer_distances_workflow.py +++ b/geest/core/workflows/multi_buffer_distances_workflow.py @@ -1,4 +1,5 @@ import os +import traceback from qgis.core import ( edit, Qgis, @@ -312,7 +313,35 @@ def _fetch_isochrones(self, layer: QgsVectorLayer) -> dict: # Make the request to ORS API using ORSClient # Any exceptions will be propogated - json = self.ors_client.make_request(self.mode, params) + try: + json = self.ors_client.make_request(self.mode, params) + except Exception as e: + error_file = os.path.join(self.workflow_directory, "error.txt") + if os.path.exists(error_file): + os.remove(error_file) + # Write the traceback to error.txt in the workflow_directory + error_path = os.path.join(self.workflow_directory, "error.txt") + with open(error_path, "w") as f: + f.write(f"Failed to process {self.workflow_name}: {e}\n") + f.write(traceback.format_exc()) + + log_message( + f"Failed to fetch isochrones layer for {self.workflow_name}: {e}", + tag="Geest", + level=Qgis.Critical, + ) + log_message( + traceback.format_exc(), + tag="Geest", + level=Qgis.Critical, + ) + self.attributes[self.result_key] = f"{self.workflow_name} Workflow Error" + self.attributes[self.result_file_key] = "" + self.attributes["error_file"] = error_path + self.attributes["error"] = ( + f"Failed to generate isochrones for {self.workflow_name}: {e}" + ) + return False return json def _create_isochrone_layer(self, isochrone_data):