diff --git a/api/well_inventory.py b/api/well_inventory.py index 90c6e0300..6f24009b8 100644 --- a/api/well_inventory.py +++ b/api/well_inventory.py @@ -558,6 +558,7 @@ def _add_csv_row(session: Session, group: Group, model: WellInventoryRow, user) well_pump_type=model.well_pump_type, well_pump_depth=model.well_pump_depth_ft, is_suitable_for_datalogger=model.datalogger_possible, + is_open=model.is_open, notes=well_notes, well_purposes=well_purposes, ) diff --git a/schemas/thing.py b/schemas/thing.py index bdf4323c0..9e34b6487 100644 --- a/schemas/thing.py +++ b/schemas/thing.py @@ -162,6 +162,7 @@ class CreateWell(CreateBaseThing, ValidateWell): well_pump_type: WellPumpType | None = None well_pump_depth: float | None = None is_suitable_for_datalogger: bool | None + is_open: bool | None = None formation_completion_code: FormationCode | None = None diff --git a/schemas/well_inventory.py b/schemas/well_inventory.py index 159d6e268..f5dc8dba5 100644 --- a/schemas/well_inventory.py +++ b/schemas/well_inventory.py @@ -240,7 +240,7 @@ class WellInventoryRow(BaseModel): depth_source: Optional[str] = None well_pump_type: Optional[str] = None well_pump_depth_ft: OptionalFloat = None - is_open: OptionalBool = None # TODO: needs a home + is_open: OptionalBool = None datalogger_possible: OptionalBool = None casing_diameter_ft: OptionalFloat = None measuring_point_description: Optional[str] = None diff --git a/services/thing_helper.py b/services/thing_helper.py index d6b563f23..456bf2a70 100644 --- a/services/thing_helper.py +++ b/services/thing_helper.py @@ -38,6 +38,7 @@ DataProvenance, ThingIdLink, MonitoringFrequencyHistory, + StatusHistory, ) from services.audit_helper import audit_add @@ -201,6 +202,8 @@ def add_thing( effective_start = data.get("first_visit_date") group_id = data.pop("group_id", None) monitoring_frequencies = data.pop("monitoring_frequencies", None) + datalogger_suitability_status = data.pop("is_suitable_for_datalogger", None) + open_status = data.pop("is_open", None) # ---------- # END UNIVERSAL THING RELATED TABLES @@ -297,6 +300,38 @@ def add_thing( audit_add(user, wcm) session.add(wcm) + if datalogger_suitability_status is not None: + if datalogger_suitability_status is True: + status_value = "Datalogger can be installed" + else: + status_value = "Datalogger cannot be installed" + dlss = StatusHistory( + target_id=thing.id, + target_table="thing", + status_value=status_value, + status_type="Datalogger Suitability Status", + start_date=effective_start, + end_date=None, + ) + audit_add(user, dlss) + session.add(dlss) + + if open_status is not None: + if open_status is True: + status_value = "Open" + else: + status_value = "Closed" + os_status = StatusHistory( + target_id=thing.id, + target_table="thing", + status_value=status_value, + status_type="Open Status", + start_date=effective_start, + end_date=None, + ) + audit_add(user, os_status) + session.add(os_status) + # ---------- # END WATER WELL SPECIFIC LOGIC # ----------