From 2ed7a2648cd346931d58c03723180330e6c96082 Mon Sep 17 00:00:00 2001
From: Sam Kagan <skagan@nrao.edu>
Date: Fri, 21 Jun 2024 15:41:18 -0600
Subject: [PATCH] Added MJD converter

---
 .../pexable/deliver/delivery/__init__.py         | 16 ++++++++++++++++
 .../pexable/deliver/delivery/finder.py           |  7 ++-----
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/apps/cli/executables/pexable/deliver/delivery/__init__.py b/apps/cli/executables/pexable/deliver/delivery/__init__.py
index 8246896a3..1135fa96d 100644
--- a/apps/cli/executables/pexable/deliver/delivery/__init__.py
+++ b/apps/cli/executables/pexable/deliver/delivery/__init__.py
@@ -19,3 +19,19 @@
 Workspaces data delivery module
 """
 __version__ = "2.8.5.dev1"
+
+
+from datetime import datetime
+
+
+def convert_datetime_to_mjd(timestamp: datetime) -> float:
+    """Convert UTC datetime to MJD
+    Sources:
+    - https://www.celestialprogramming.com/julian.html for JD
+    - https://core2.gsfc.nasa.gov/time/a for MJD
+    """
+    secs_since_posix_epoch = timestamp.timestamp()
+    SECS_IN_DAY = 86400
+    SECS_FROM_JD_TO_POSIX_EPOCHS = 2440587.5
+    JD_TO_MJD = 2400000.5
+    return (secs_since_posix_epoch / SECS_IN_DAY) + SECS_FROM_JD_TO_POSIX_EPOCHS - JD_TO_MJD
diff --git a/apps/cli/executables/pexable/deliver/delivery/finder.py b/apps/cli/executables/pexable/deliver/delivery/finder.py
index b24648821..d604037ae 100644
--- a/apps/cli/executables/pexable/deliver/delivery/finder.py
+++ b/apps/cli/executables/pexable/deliver/delivery/finder.py
@@ -27,6 +27,7 @@ import re
 from typing import Iterator, List
 
 import pendulum
+from delivery import convert_datetime_to_mjd
 from pendulum.datetime import DateTime
 
 from .products import ArchiveProduct, ProductMetadata, RestoreProduct, SpooledProduct
@@ -136,7 +137,7 @@ class RestoreProductFinder(ProductFinder):
         start_timestamp_match = re.match(r"^casa-(?P<timestamp>[0-9]+-[0-9]+).log$", casa_log_name)
         assert start_timestamp_match
         start_timestamp = pendulum.from_format(start_timestamp_match.group("timestamp"), "YYYYMMDD-HHmmss")
-        start_mjd = date_to_mjd(start_timestamp)
+        start_mjd = convert_datetime_to_mjd(start_timestamp)
         return ProductMetadata(
             project_metadata["telescope"], project_metadata["project_code"], "restored_cms", None, None, str(start_mjd)
         )
@@ -147,7 +148,3 @@ class RestoreProductFinder(ProductFinder):
 
     def find_products(self) -> Iterator[SpooledProduct]:
         yield RestoreProduct(self.dir, self._metadata)
-
-
-def date_to_mjd(timestamp: DateTime) -> float:
-    return 0
-- 
GitLab