From 0724bdd6b026a6e0683a99de1fbaad18447b327c Mon Sep 17 00:00:00 2001
From: Travis Rivers <trivers@contractor.usgs.gov>
Date: Thu, 9 Apr 2020 08:44:27 -0600
Subject: [PATCH] add validators to observatory

---
 geomagio/api/ws/observatory.py | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/geomagio/api/ws/observatory.py b/geomagio/api/ws/observatory.py
index dae8dd01e..8e018bec6 100644
--- a/geomagio/api/ws/observatory.py
+++ b/geomagio/api/ws/observatory.py
@@ -1,4 +1,5 @@
-from pydantic import BaseModel
+from pydantic import BaseModel, validator
+from typing import Dict
 
 
 class Observatory(BaseModel):
@@ -12,6 +13,33 @@ class Observatory(BaseModel):
     declination_base: int
     sensor_orientation: str
 
+    @validator("agency_name", always=true)
+    def validate_agency_name(cls, agency_name: str, values: Dict) -> str:
+        agency = values.get("agency")
+        if not agency_name:
+            if agency == "USGS":
+                agency_name = "United States Geological Survey (USGS)"
+            if agency == "GSC":
+                agency_name = "Geological Survey of Canada (GSC)"
+            if agency == "BGS":
+                agency_name = "British Geological Survey (BGS)"
+            if agency == "SANSA":
+                agency_name = "South African National Space Agency (SANSA)"
+            if agency == "JMA":
+                agency_name = "Japan Meteorological Agency (JMA)"
+        return agency_name
+
+    @validator("sensor_orientation", always=true)
+    def validate_sensor_orientation(cls, sensor_orientation: str, values: Dict) -> str:
+        agency = values.get("agency")
+
+        if not sensor_orientation:
+            if agency == "GSC":
+                sensor_orientation = "XYZF"
+            else:
+                sensor_orientation = "HDZF"
+            return sensor_orientation
+
 
 OBSERVATORIES = [
     Observatory(
-- 
GitLab