2020from backend .connectors import ISC_SEVEN_RIVERS_BOUNDING_POLYGON
2121from backend .connectors .mappings import ISC_SEVEN_RIVERS_ANALYTE_MAPPING
2222from backend .constants import (
23- TDS ,
2423 FEET ,
25- URANIUM ,
26- SULFATE ,
27- FLUORIDE ,
28- CHLORIDE ,
2924 DT_MEASURED ,
30- DTW_UNITS ,
3125 DTW ,
32- PARAMETER ,
26+ PARAMETER_NAME ,
3327 PARAMETER_VALUE ,
3428 PARAMETER_UNITS ,
29+ SOURCE_PARAMETER_NAME ,
30+ SOURCE_PARAMETER_UNITS ,
3531)
3632from backend .connectors .isc_seven_rivers .transformer import (
3733 ISCSevenRiversSiteTransformer ,
@@ -93,11 +89,12 @@ def get_records(self):
9389class ISCSevenRiversAnalyteSource (BaseAnalyteSource ):
9490 transformer_klass = ISCSevenRiversAnalyteTransformer
9591 _analyte_ids = None
92+ _source_parameter_name = None
9693
9794 def __repr__ (self ):
9895 return "ISCSevenRiversAnalyteSource"
9996
100- def _get_analyte_id (self , analyte ):
97+ def _get_analyte_id_and_name (self , analyte ):
10198 """ """
10299 if self ._analyte_ids is None :
103100
@@ -107,13 +104,20 @@ def _get_analyte_id(self, analyte):
107104
108105 analyte = get_analyte_search_param (analyte , ISC_SEVEN_RIVERS_ANALYTE_MAPPING )
109106 if analyte :
110- return self ._analyte_ids .get (analyte )
107+ id_and_name = {
108+ "id" : self ._analyte_ids .get (analyte ),
109+ "name" : analyte ,
110+ }
111+ return id_and_name
111112
112113 def _extract_parameter_record (self , record ):
113- record [PARAMETER ] = self .config .parameter
114+ record [PARAMETER_NAME ] = self .config .parameter
114115 record [PARAMETER_VALUE ] = record ["result" ]
115- record [PARAMETER_UNITS ] = record [ "units" ]
116+ record [PARAMETER_UNITS ] = self . config . analyte_output_units
116117 record [DT_MEASURED ] = get_datetime (record )
118+ record [SOURCE_PARAMETER_NAME ] = self ._source_parameter_name
119+ record [SOURCE_PARAMETER_UNITS ] = record ["units" ]
120+
117121 return record
118122
119123 def _extract_most_recent (self , records ):
@@ -122,25 +126,30 @@ def _extract_most_recent(self, records):
122126 return {
123127 "value" : record ["result" ],
124128 "datetime" : get_datetime (record ),
125- "units" : record ["units" ],
129+ "source_parameter_units" : record ["units" ],
130+ "source_parameter_name" : self ._source_parameter_name ,
126131 }
127132
128133 def _clean_records (self , records ):
129134 return [r for r in records if r ["result" ] is not None ]
130135
131- def _extract_parameter_results (self , records ):
136+ def _extract_source_parameter_results (self , records ):
132137 return [r ["result" ] for r in records ]
133138
134- def _extract_parameter_units (self , records ):
139+ def _extract_source_parameter_units (self , records ):
135140 return [r ["units" ] for r in records ]
136141
137142 def _extract_parameter_dates (self , records : list ) -> list :
138143 return [get_datetime (r ) for r in records ]
139144
145+ def _extract_source_parameter_names (self , records : list ) -> list :
146+ return [self ._source_parameter_name for r in records ]
147+
140148 def get_records (self , site_record ):
141149 config = self .config
142- analyte_id = self ._get_analyte_id (config .parameter )
143- if analyte_id :
150+ analyte_id_and_name = self ._get_analyte_id_and_name (config .parameter )
151+ if analyte_id_and_name :
152+ analyte_id = analyte_id_and_name ["id" ]
144153 params = {
145154 "monitoringPointId" : site_record .id ,
146155 "analyteId" : analyte_id ,
@@ -149,13 +158,18 @@ def get_records(self, site_record):
149158 }
150159 params .update (get_date_range (config ))
151160
161+ if self ._source_parameter_name is None :
162+ self ._source_parameter_name = analyte_id_and_name ["name" ]
163+
152164 return self ._execute_json_request (
153165 _make_url ("getReadings.ashx" ), params = params
154166 )
155167
156168
157169class ISCSevenRiversWaterLevelSource (BaseWaterLevelSource ):
158170 transformer_klass = ISCSevenRiversWaterLevelTransformer
171+ _source_parameter_name = "depthToWaterFeet"
172+ _source_parameter_units = FEET
159173
160174 def get_records (self , site_record ):
161175 params = {
@@ -174,24 +188,37 @@ def _clean_records(self, records):
174188 return [r for r in records if r ["depthToWaterFeet" ] is not None ]
175189
176190 def _extract_parameter_record (self , record ):
177- record [PARAMETER ] = DTW
191+ record [PARAMETER_NAME ] = DTW
178192 record [PARAMETER_VALUE ] = record ["depthToWaterFeet" ]
179- record [PARAMETER_UNITS ] = FEET
193+ record [PARAMETER_UNITS ] = self . config . waterlevel_output_units
180194 record [DT_MEASURED ] = get_datetime (record )
195+ record [SOURCE_PARAMETER_NAME ] = self ._source_parameter_name
196+ record [SOURCE_PARAMETER_UNITS ] = self ._source_parameter_units
181197 return record
182198
183- def _extract_parameter_results (self , records ):
199+ def _extract_source_parameter_results (self , records ):
184200 return [
185201 r ["depthToWaterFeet" ] for r in records if not r ["invalid" ] and not r ["dry" ]
186202 ]
187203
188204 def _extract_parameter_dates (self , records : list ) -> list :
189205 return [get_datetime (r ) for r in records ]
190206
207+ def _extract_source_parameter_names (self , records ):
208+ return [self ._source_parameter_name for r in records ]
209+
210+ def _extract_source_parameter_units (self , records ):
211+ return [self ._source_parameter_units for r in records ]
212+
191213 def _extract_most_recent (self , records ):
192214 record = get_most_recent (records , "dateTime" )
193215 t = get_datetime (record )
194- return {"value" : record ["depthToWaterFeet" ], "datetime" : t , "units" : FEET }
216+ return {
217+ "value" : record ["depthToWaterFeet" ],
218+ "datetime" : t ,
219+ "source_parameter_units" : self ._source_parameter_units ,
220+ "source_parameter_name" : DTW ,
221+ }
195222
196223
197224# ============= EOF =============================================
0 commit comments