diff --git a/ARGO/oceancurrent/oceancurrent_file_server_api.py b/ARGO/oceancurrent/oceancurrent_file_server_api.py index 47d1006b..b7447817 100644 --- a/ARGO/oceancurrent/oceancurrent_file_server_api.py +++ b/ARGO/oceancurrent/oceancurrent_file_server_api.py @@ -514,6 +514,38 @@ def _load_api_endpoint(): "filetype": ".gif", "region_layer": 3, "max_layer": 3 + }, + { + "productId": "fishSOOP-profiles", + "include": [ + {"path": "^fishsoop$", "layer": 1}, + {"path": "^(Darwin|Kimberley|NWS|SharkBay|Perth|AlbEsp|RechEyre|SAgulfs|BassStr|TasW|TasE|SNSW|NNSW|SGBR|CGBR|NGBR|GOC|Au)$", "layer": 2}, + {"path": "^\\d{4}$", "layer": 3} + ], + "filetype": ".gif", + "region_layer": 2, + "max_layer": 3, + "save_in_product_folder": True + }, + { + "productId": "fishSOOP-quarterlyAnomalies", + "include": [ + {"path": "^fishsoop$", "layer": 1}, + {"path": "^anom2$", "layer": 2} + ], + "filetype": ".gif", + "max_layer": 2, + "save_in_product_folder": True + }, + { + "productId": "fishSOOP-depthAnomalies", + "include": [ + {"path": "^fishsoop$", "layer": 1}, + {"path": "^anom$", "layer": 2} + ], + "filetype": ".gif", + "max_layer": 2, + "save_in_product_folder": True } ] diff --git a/ARGO/oceancurrent/test_oceancurrent_file_server_api.py b/ARGO/oceancurrent/test_oceancurrent_file_server_api.py index 82b61aa2..e669047d 100644 --- a/ARGO/oceancurrent/test_oceancurrent_file_server_api.py +++ b/ARGO/oceancurrent/test_oceancurrent_file_server_api.py @@ -425,6 +425,59 @@ def prepare_test_cases(self): ] } ], + "fishSOOP-profiles": [ + { + "path": "/fishsoop/Au/2026", + "productId": "fishSOOP-profiles", + "region": "Au", + "depth": None, + "files": [ + { + "name": "20260609.gif" + } + ] + }, + { + "path": "/fishsoop/TasE/2026", + "productId": "fishSOOP-profiles", + "region": "TasE", + "depth": None, + "files": [ + { + "name": "20260609.gif" + } + ] + } + ], + "fishSOOP-quarterlyAnomalies": [ + { + "path": "/fishsoop/anom2", + "productId": "fishSOOP-quarterlyAnomalies", + "region": None, + "depth": None, + "files": [ + { + "name": "tanom_reg11_TasE_2025Q2_layer3.gif" + }, + { + "name": "tanom_avg_p1.gif" + } + ] + } + ], + "fishSOOP-depthAnomalies": [ + { + "path": "/fishsoop/anom", + "productId": "fishSOOP-depthAnomalies", + "region": None, + "depth": None, + "files": [ + { + "name": "tanom_reg18_Au_layer8.gif" + } + ] + } + ], } def load_and_normalize_json(self, file_path): @@ -518,6 +571,13 @@ def test_file_structure_explorer(self): self.verify_json("tidalCurrents-monthplots", "tides", "tidalCurrents-monthplots") self.verify_json("EACMooringArray", "EAC_array_figures", "EACMooringArray") self.verify_json("swotGsla-ssh", "DR_SWOT/SSH", "SSH") + self.verify_json("fishSOOP-profiles", "fishsoop", "fishSOOP-profiles") + self.verify_json("fishSOOP-quarterlyAnomalies", "fishsoop", "fishSOOP-quarterlyAnomalies") + self.verify_json("fishSOOP-depthAnomalies", "fishsoop", "fishSOOP-depthAnomalies") + # Verify the fishsoop finder maps folder is excluded by the region whitelist + fishsoop_json_path = os.path.join(self.file_test_dir, "fishsoop", "fishSOOP-profiles.json") + fishsoop_regions = {item["region"] for item in self.load_and_normalize_json(fishsoop_json_path)} + self.assertNotIn("maps", fishsoop_regions, "Navigation folder 'maps' should not be indexed") # Verify unrelated directories under DR_SWOT/SSH are excluded by the region whitelist swot_json_path = os.path.join(self.file_test_dir, "DR_SWOT", "SSH", "SSH.json") swot_regions = {item["region"] for item in self.load_and_normalize_json(swot_json_path)} diff --git a/ARGO/oceancurrent/tests/mnt/oceancurrent/website/fishsoop/Au/2026/20260609.gif b/ARGO/oceancurrent/tests/mnt/oceancurrent/website/fishsoop/Au/2026/20260609.gif new file mode 100644 index 00000000..e69de29b diff --git a/ARGO/oceancurrent/tests/mnt/oceancurrent/website/fishsoop/TasE/2026/20260609.gif b/ARGO/oceancurrent/tests/mnt/oceancurrent/website/fishsoop/TasE/2026/20260609.gif new file mode 100644 index 00000000..e69de29b diff --git a/ARGO/oceancurrent/tests/mnt/oceancurrent/website/fishsoop/anom/tanom_reg18_Au_layer8.gif b/ARGO/oceancurrent/tests/mnt/oceancurrent/website/fishsoop/anom/tanom_reg18_Au_layer8.gif new file mode 100644 index 00000000..e69de29b diff --git a/ARGO/oceancurrent/tests/mnt/oceancurrent/website/fishsoop/anom2/index.html b/ARGO/oceancurrent/tests/mnt/oceancurrent/website/fishsoop/anom2/index.html new file mode 100644 index 00000000..e69de29b diff --git a/ARGO/oceancurrent/tests/mnt/oceancurrent/website/fishsoop/anom2/tanom_avg_p1.gif b/ARGO/oceancurrent/tests/mnt/oceancurrent/website/fishsoop/anom2/tanom_avg_p1.gif new file mode 100644 index 00000000..e69de29b diff --git a/ARGO/oceancurrent/tests/mnt/oceancurrent/website/fishsoop/anom2/tanom_reg11_TasE_2025Q2_layer3.gif b/ARGO/oceancurrent/tests/mnt/oceancurrent/website/fishsoop/anom2/tanom_reg11_TasE_2025Q2_layer3.gif new file mode 100644 index 00000000..e69de29b diff --git a/ARGO/oceancurrent/tests/mnt/oceancurrent/website/fishsoop/maps/2026/20260609.gif b/ARGO/oceancurrent/tests/mnt/oceancurrent/website/fishsoop/maps/2026/20260609.gif new file mode 100644 index 00000000..e69de29b