def create_get_values_site_response(self, site, startDateTime, endDateTime): timeSeriesResponse = WaterML.TimeSeriesResponseType() logging.debug( 'create_get_values_site_response: timeSeriesResponse created') queryInfo = WaterML.QueryInfoType(creationTime=datetime.datetime.now()) criteria = WaterML.criteriaType(MethodCalled='GetValuesForASite') pType_site = WaterML.parameterType(name='site', value=site) criteria.add_parameter(pType_site) if startDateTime is not None: pType_sdate = WaterML.parameterType(name='startDate', value=startDateTime) criteria.add_parameter(pType_sdate) if endDateTime is not None: pType_edate = WaterML.parameterType(name='endDate', value=endDateTime) criteria.add_parameter(pType_edate) queryInfo.set_criteria(criteria) # queryInfoNote = WaterML.NoteType() # queryInfo.add_note(queryInfoNote) # queryInfo.set_extension('') timeSeriesResponse.set_queryInfo(queryInfo) logging.debug( 'create_get_values_site_response: queryInfo set to timeSeriesResponse' ) siteCode = self.get_site_code(site) seriesResultArr = self.dao.get_series_by_sitecode(siteCode) logging.debug( 'create_get_values_site_response: seriesResultArr: {} series'. format(len(seriesResultArr))) if seriesResultArr: for seriesResult in seriesResultArr: valueResultArr = self.dao.get_datavalues_series( seriesResult, startDateTime, endDateTime) logging.debug( 'create_get_values_site_response: valueResultArr determined' ) # if not valueResultArr: # raise Exception( # ('ERROR: No data found for {} for dates ' # '{} - {}').format(site, startDateTime, endDateTime)) if not valueResultArr or len(valueResultArr) == 0: continue timeSeries = self.create_timeseries( siteCode, seriesResult.Variable.VariableCode, valueResultArr) timeSeriesResponse.add_timeSeries(timeSeries) return timeSeriesResponse
def create_get_values_response(self, siteArg, varArg, startDateTime=None, endDateTime=None): # TODO: Tim thinks the DAO should handle network and vocab parsing, # not WOF # Flavio: # cleans the siteCode, by eliminating the network part in the # network:siteCode representation # cleans the varCode, by eliminating the vocabulary part in the # vocabular:varCode representation siteCode = self.get_site_code(siteArg) varCode = self.get_variable_code(varArg) valueResultArr = self.dao.get_datavalues(siteCode, varCode, startDateTime, endDateTime) # if not valueResultArr: # raise Exception( # "ERROR: No data found for {}:{} for dates {} - {}".format( # siteCode, varCode, startDateTime, endDateTime # ) # ) # Flavio: # Creates timeSeriesResponse (a WaterML1.1 TimeSeriesResponseType object) # with queryInfo (site, variable, startDate, endDate) timeSeriesResponse = WaterML.TimeSeriesResponseType() queryInfo = WaterML.QueryInfoType(creationTime=datetime.datetime.now()) criteria = WaterML.criteriaType(MethodCalled='GetValues') pType_site = WaterML.parameterType(name='site', value=siteArg) criteria.add_parameter(pType_site) pType_var = WaterML.parameterType(name='variable', value=varArg) criteria.add_parameter(pType_var) if startDateTime is not None: pType_sdate = WaterML.parameterType(name='startDate', value=startDateTime) criteria.add_parameter(pType_sdate) if endDateTime is not None: pType_edate = WaterML.parameterType(name='endDate', value=endDateTime) criteria.add_parameter(pType_edate) queryInfo.set_criteria(criteria) # queryInfoNote = WaterML.NoteType() # queryInfo.add_note(queryInfoNote) # queryInfo.set_extension('') timeSeriesResponse.set_queryInfo(queryInfo) logging.debug( 'create_get_values_response: timeSeriesResponse created with queryInfo' ) # if not valueResultArr: # timeSeries = WaterML.TimeSeriesType() # timeSeriesResponse.add_timeSeries(timeSeries) # return timeSeriesResponse if not valueResultArr: raise Exception( "Values Not Found for {}:{} for dates {} - {}".format( siteCode, varCode, startDateTime, endDateTime)) if isinstance(valueResultArr, dict): logging.debug('create_get_values_response: valueResultArr is dict') for key in valueResultArr.keys(): timeSeries = self.create_timeseries(siteCode, key, valueResultArr[key]) timeSeriesResponse.add_timeSeries(timeSeries) else: logging.debug( 'create_get_values_response: valueResultArr is not dict') timeSeries = self.create_timeseries(siteCode, varCode, valueResultArr) timeSeriesResponse.add_timeSeries(timeSeries) return timeSeriesResponse
def create_get_values_response(self, siteArg, varArg, startDateTime=None, endDateTime=None): # TODO: Tim thinks the DAO should handle network and vocab parsing, # not WOF siteCode = self.get_site_code(siteArg) varCode = self.get_variable_code(varArg) valueResultArr = self.dao.get_datavalues(siteCode, varCode, startDateTime, endDateTime) # if not valueResultArr: # raise Exception( # "ERROR: No data found for {}:{} for dates {} - {}".format( # siteCode, varCode, startDateTime, endDateTime # ) # ) timeSeriesResponse = WaterML.TimeSeriesResponseType() queryInfo = WaterML.QueryInfoType(creationTime=datetime.datetime.now()) criteria = WaterML.criteriaType(MethodCalled='GetValues') pType_site = WaterML.parameterType(name='site', value=siteArg) criteria.add_parameter(pType_site) pType_var = WaterML.parameterType(name='variable', value=varArg) criteria.add_parameter(pType_var) if startDateTime is not None: pType_sdate = WaterML.parameterType(name='startDate', value=startDateTime) criteria.add_parameter(pType_sdate) if endDateTime is not None: pType_edate = WaterML.parameterType(name='endDate', value=endDateTime) criteria.add_parameter(pType_edate) queryInfo.set_criteria(criteria) # queryInfoNote = WaterML.NoteType() # queryInfo.add_note(queryInfoNote) # queryInfo.set_extension('') timeSeriesResponse.set_queryInfo(queryInfo) # if not valueResultArr: # timeSeries = WaterML.TimeSeriesType() # timeSeriesResponse.add_timeSeries(timeSeries) # return timeSeriesResponse if not valueResultArr: raise Exception( "Values Not Found for {}:{} for dates {} - {}".format( siteCode, varCode, startDateTime, endDateTime)) if isinstance(valueResultArr, dict): for key in valueResultArr.keys(): timeSeries = self.create_timeseries(siteCode, key, valueResultArr[key]) timeSeriesResponse.add_timeSeries(timeSeries) else: timeSeries = self.create_timeseries(siteCode, varCode, valueResultArr) timeSeriesResponse.add_timeSeries(timeSeries) return timeSeriesResponse