Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
d3edff3
FIX: transfer lon/lat instead of original e/n location
jacob-a-brown Sep 22, 2025
0a73053
WIP: water level transfer script
jacob-a-brown Sep 22, 2025
525514f
Merge branch 'jab-observation-sample-field-revisions' into jab-observ…
jacob-a-brown Sep 22, 2025
71a4328
WIP: NMA WaterLevels MeasuredBy -> Contacts
jacob-a-brown Sep 23, 2025
1232c0c
Merge branch 'jab-observation-sample-field-revisions' into jab-observ…
jacob-a-brown Sep 23, 2025
30bcf9a
WIP: waterlevels transfer
jacob-a-brown Sep 23, 2025
5cd0ca4
WIP: water levels transfer
jacob-a-brown Sep 23, 2025
ba76194
Merge branch 'jab-observation-sample-field-revisions' into jab-observ…
jacob-a-brown Sep 23, 2025
42e07ed
WIP: work on waterlevels transfer
jacob-a-brown Sep 23, 2025
4c3b4a3
Merge branch 'staging' into jab-observation-sample-field-transfer
jacob-a-brown Sep 24, 2025
68f7c7e
WIP: water levels transfer
jacob-a-brown Sep 24, 2025
b93d48b
WIP: water levels transfer
jacob-a-brown Sep 24, 2025
5c5772d
WIP: water levels transfer
jacob-a-brown Sep 25, 2025
9fc0ab4
Merge branch 'staging' into jab-observation-sample-field-transfer
jacob-a-brown Sep 27, 2025
cca507e
WIP: water levels transfer
jacob-a-brown Sep 27, 2025
f57d0dc
WIP: water levels transfer
jacob-a-brown Sep 27, 2025
ee51383
Formatting changes
jacob-a-brown Sep 27, 2025
3eb8639
WIP: water levels transfer
jacob-a-brown Sep 27, 2025
6174bdd
Merge branch 'jab-observation-sample-field-transfer' of https://githu…
jacob-a-brown Sep 27, 2025
5d61c24
WIP: water levels transfer
jacob-a-brown Sep 29, 2025
d0561ac
Merge branch 'staging' into jab-observation-sample-field-transfer
jacob-a-brown Sep 29, 2025
3100068
fix: add back lexicons removed from merge conflict resolution
jacob-a-brown Sep 29, 2025
45400c4
WIP: water levels transfer
jacob-a-brown Sep 29, 2025
7c08d20
Merge branch 'staging' into jab-observation-sample-field-transfer
jacob-a-brown Sep 29, 2025
70a1071
WIP: water levels transfer
jacob-a-brown Sep 29, 2025
0b1cc24
WIP: water levels transfer
jacob-a-brown Sep 30, 2025
b3b25f3
WIP: water levels transfer
jacob-a-brown Sep 30, 2025
86efffb
fix: move lexicon_mapper to transfers/util.py to prevent circular imp…
jacob-a-brown Sep 30, 2025
4819603
refactor: transfer wls at end to use owners if needed
jacob-a-brown Sep 30, 2025
cafa593
WIP: water levels transfer
jacob-a-brown Sep 30, 2025
c692a6d
fix: don't add transfer logs to git
jacob-a-brown Sep 30, 2025
ada26f6
feat: enable transfer of water levels
jacob-a-brown Sep 30, 2025
3fc4cb6
Merge branch 'staging' into jab-observation-sample-field-transfer
jacob-a-brown Sep 30, 2025
ad20da9
fix: fix patch contact test for updated lexicon
jacob-a-brown Sep 30, 2025
41167ee
fix: fix elif array for glorieta
jacob-a-brown Sep 30, 2025
6eb1188
refactor: use json/dict for MeasuredBy mapper
jacob-a-brown Sep 30, 2025
63f179d
refactor: handle misc cases in code
jacob-a-brown Sep 30, 2025
e7e4ec2
Update transfers/util.py
jirhiker Oct 1, 2025
252fae2
Update transfers/util.py
jirhiker Oct 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ launcher.sh
gcs_credentials.json
transfers/data/assets*
transfers/transfer*.log
transfer*.log

# deployment files
app.yaml
51 changes: 48 additions & 3 deletions core/lexicon.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
{"categories": ["elevation_method"], "term": "Reported", "definition": "Reported"},
{"categories": ["elevation_method"], "term": "Survey-grade Global Navigation Satellite Sys, Lvl1", "definition": "Survey-grade Global Navigation Satellite Sys, Lvl1"},
{"categories": ["elevation_method"], "term": "USGS National Elevation Dataset (NED)", "definition": "USGS National Elevation Dataset (NED)"},
{"categories": ["elevation_method", "sample_method", "coordinate_method", "current_use", "status", "organization"], "term": "Unknown", "definition": "Unknown"},
{"categories": ["elevation_method", "sample_method", "coordinate_method", "current_use", "status", "organization", "role"], "term": "Unknown", "definition": "Unknown"},
{"categories": ["construction_method"], "term": "Air-rotary", "definition": "Air-rotary"},
{"categories": ["construction_method"], "term": "Bored or augered", "definition": "Bored or augered"},
{"categories": ["construction_method"], "term": "Cable-tool", "definition": "Cable-tool"},
Expand Down Expand Up @@ -348,10 +348,11 @@
{"categories": ["organization"], "term": "NMED", "definition": "New Mexico Environment Department"},
{"categories": ["organization"], "term": "NMOSE", "definition": "New Mexico Office of the State Engineer"},
{"categories": ["organization"], "term": "NMBGMR", "definition": "New Mexico Bureau of Geology and Mineral Resources"},
{"categories": ["organization"], "term": "Bernalillo Cty", "definition": "Bernalillo County"},
{"categories": ["organization"], "term": "Bernalillo County", "definition": "Bernalillo County"},
{"categories": ["organization"], "term": "BLM", "definition": "Bureau of Land Management"},
{"categories": ["organization"], "term": "SFC", "definition": "Santa Fe County"},
{"categories": ["organization"], "term": "NESWCD", "definition": "Northeast Soil & Water Conservation District"},
{"categories": ["organization"], "term": "CSF", "definition": "City of Santa Fe"},
{"categories": ["organization"], "term": "NESWCD", "definition": "Northeastern Soil & Water Conservation District"},
{"categories": ["organization"], "term": "NMISC", "definition": "New Mexico Interstate Stream Commission"},
{"categories": ["organization"], "term": "PVACD", "definition": "Pecos Valley Artesian Conservancy District"},
{"categories": ["organization"], "term": "TSWCD", "definition": "Taos Soil & Water Conservation District"},
Expand All @@ -361,6 +362,41 @@
{"categories": ["organization"], "term": "USFS", "definition": "United States Forest Service"},
{"categories": ["organization"], "term": "NMT", "definition": "New Mexico Tech"},
{"categories": ["organization"], "term": "NPS", "definition": "National Park Service"},
{"categories": ["organization"], "term": "NMRWA", "definition": "New Mexico Rural Water Association"},
{"categories": ["organization"], "term": "Taos SWCD", "definition": "Taos Soil and Water Conservation District"},
{"categories": ["organization"], "term": "Otero SWCD", "definition": "Otero Soil and Water Conservation District"},
{"categories": ["organization"], "term": "Northeastern SWCD", "definition": "Northeastern Soil and Water Conservation District"},
{"categories": ["organization"], "term": "A&T Pump & Well Service, LLC", "definition": "A&T Pump & Well Service, LLC"},
{"categories": ["organization"], "term": "A. G. Wassenaar, Inc", "definition": "A. G. Wassenaar, Inc"},
{"categories": ["organization"], "term": "AMEC", "definition": "AMEC"},
{"categories": ["organization"], "term": "Balleau Groundwater, Inc", "definition": "Balleau Groundwater, Inc"},
{"categories": ["organization"], "term": "CDM Smith", "definition": "CDM Smith"},
{"categories": ["organization"], "term": "CH2M Hill", "definition": "CH2M Hill"},
{"categories": ["organization"], "term": "Corbin Consulting, Inc", "definition": "Corbin Consulting, Inc"},
{"categories": ["organization"], "term": "Chevron", "definition": "Chevron"},
{"categories": ["organization"], "term": "Daniel B. Stephens & Associates, Inc", "definition": "Daniel B. Stephens & Associates, Inc"},
{"categories": ["organization"], "term": "EnecoTech", "definition": "EnecoTech"},
{"categories": ["organization"], "term": "Faith Engineering, Inc", "definition": "Faith Engineering, Inc"},
{"categories": ["organization"], "term": "Foster Well Service, Inc", "definition": "Foster Well Service, Inc"},
{"categories": ["organization"], "term": "Glorieta Geoscience, Inc", "definition": "Glorieta Geoscience, Inc"},
{"categories": ["organization"], "term": "Golder Associates, Inc", "definition": "Golder Associates, Inc"},
{"categories": ["organization"], "term": "Hathorn's Well Service, Inc", "definition": "Hathorn's Well Service, Inc"},
{"categories": ["organization"], "term": "Hydroscience Associates, Inc", "definition": "Hydroscience Associates, Inc"},
{"categories": ["organization"], "term": "IC Tech, Inc", "definition": "IC Tech, Inc"},
{"categories": ["organization"], "term": "John Shomaker & Associates, Inc", "definition": "John Shomaker & Associates, Inc"},
{"categories": ["organization"], "term": "Kuckleman Pump Service", "definition": "Kuckleman Pump Service"},
{"categories": ["organization"], "term": "Los Golondrinas", "definition": "Los Golondrinas"},
{"categories": ["organization"], "term": "Minton Engineers", "definition": "Minton Engineers"},
{"categories": ["organization"], "term": "MJDarrconsult, Inc", "definition": "MJDarrconsult, Inc"},
{"categories": ["organization"], "term": "Puerta del Canon Ranch", "definition": "Puerta del Canon Ranch"},
{"categories": ["organization"], "term": "Rodgers & Company, Inc", "definition": "Rodgers & Company, Inc"},
{"categories": ["organization"], "term": "San Pedro Creek Estates HOA", "definition": "San Pedro Creek Estates HOA"},
{"categories": ["organization"], "term": "Statewide Drilling, Inc", "definition": "Statewide Drilling, Inc"},
{"categories": ["organization"], "term": "Tec Drilling Limited", "definition": "Tec Drilling Limited"},
{"categories": ["organization"], "term": "Tetra Tech, Inc", "definition": "Tetra Tech, Inc"},
{"categories": ["organization"], "term": "Thompson Drilling, Inc", "definition": "Thompson Drilling, Inc"},
{"categories": ["organization"], "term": "Witcher & Associates", "definition": "Witcher & Associates"},
{"categories": ["organization"], "term": "Zeigler Geologic Consulting, LLC", "definition": "Zeigler Geologic Consulting, LLC"},
{"categories": ["collection_method"], "term": "manual", "definition": "manual sampling"},
{"categories": ["collection_method"], "term": "continuous", "definition": "continuous sampling"},
{"categories": ["role"], "term": "Owner", "definition": "Owner"},
Expand All @@ -371,9 +407,18 @@
{"categories": ["role"], "term": "Hydrologist", "definition": "Hydrologist"},
{"categories": ["role"], "term": "Hydrogeologist", "definition": "Hydrogeologist"},
{"categories": ["role"], "term": "Engineer", "definition": "Engineer"},
{"categories": ["role"], "term": "Organization", "definition": "A contact that is an organization"},
{"categories": ["role"], "term": "Specialist", "definition": "Specialist"},
{"categories": ["role"], "term": "Technician", "definition": "Technician"},
{"categories": ["role"], "term": "Research Assistant", "definition": "Research Assistant"},
{"categories": ["role"], "term": "Research Scientist", "definition": "Research Scientist"},
{"categories": ["role"], "term": "Operator", "definition": "Operator"},
{"categories": ["role"], "term": "Biologist", "definition": "Biologist"},
{"categories": ["role"], "term": "Lab Manager", "definition": "Lab Manager"},
{"categories": ["role"], "term": "Publications Manager", "definition": "Publications Manager"},
{"categories": ["email_type", "phone_type", "address_type", "contact_type"], "term": "Primary", "definition": "primary"},
{"categories": ["contact_type"], "term": "Secondary", "definition": "secondary"},
{"categories": ["contact_type"], "term": "Field Event Participant", "definition": "A contact who has participated in a field event"},
{"categories": ["email_type", "phone_type", "address_type"], "term": "Work", "definition": "work"},
{"categories": ["email_type", "address_type"], "term": "Personal", "definition": "personal"},
{"categories": ["address_type"], "term": "Mailing", "definition": "mailing"},
Expand Down
3 changes: 3 additions & 0 deletions db/contact.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,10 @@ class Contact(Base, AutoBaseMixin, ReleaseMixin):
organization: Mapped[str] = lexicon_term(nullable=True)
role: Mapped[str] = lexicon_term(nullable=False)
contact_type: Mapped[str] = lexicon_term(nullable=False)

# primary keys of the nm aquifer tables from which the contacts originate
nma_pk_owners: Mapped[str] = mapped_column(String(100), nullable=True)
nma_pk_waterlevels: Mapped[str] = mapped_column(String(100), nullable=True)

phones: Mapped[List["Phone"]] = relationship(
"Phone", back_populates="contact", passive_deletes=True
Expand Down
6 changes: 6 additions & 0 deletions db/sample.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,12 @@ class Sample(Base, AutoBaseMixin, ReleaseMixin):
)
notes: Mapped[str] = mapped_column(nullable=True)

# --- Auditing Fields from NM_Aquifer ---
nma_pk_waterlevels: Mapped[str] = mapped_column(
nullable=True,
comment="NM_Aquifer primary key for waterlevels - to be used for transfer audits",
)

# --- Relationship Definitions ---
field_activity: Mapped["FieldActivity"] = relationship(back_populates="samples")
field_event_contact: Mapped["FieldEventContactAssociation"] = relationship(
Expand Down
77 changes: 0 additions & 77 deletions services/lexicon_mapper.py

This file was deleted.

2 changes: 1 addition & 1 deletion tests/test_contact.py
Original file line number Diff line number Diff line change
Expand Up @@ -786,7 +786,7 @@ def test_patch_contact_409_bad_contact_type(third_contact):
assert data["detail"][0]["loc"] == ["body", "contact_type"]
assert (
data["detail"][0]["msg"]
== "Invalid contact_type. Valid terms are: Primary | Secondary"
== "Invalid contact_type. Valid terms are: Primary | Secondary | Field Event Participant"
)
assert data["detail"][0]["type"] == "value_error"
assert data["detail"][0]["input"] == {"contact_type": payload["contact_type"]}
Expand Down
Loading
Loading