if err is not None:return results, err form_cleaned, err = self.setFormCleaned(initial) if err is not None:return results, err try: results = WRCCUtils.request_and_format_data(form_cleaned) except Exception, e: err = 'FAIL request_and_format_data. ERROR: ' + str(e) + ' PARAMS: ' + str(params) return results, err if 'data_summary' in params.keys() and params['data_summary'] == 'windowed_data': d = copy.deepcopy(results['data'][0]) sd = params['start_date'] ed = params['end_date'] sw = params['start_window'] ew = params['end_window'] try: results['data'] = WRCCUtils.get_windowed_data(d, sd, ed, sw, ew) except Exception, e: results = {} err = 'FAIL get_windowed_data. ERROR: ' + str(e) + ' PARAMS: ' + str(params) return results, err return results, err def test_single_lister_results(self, utClass,results, err): if err is not None: logger.error(err + '\n') try: utClass.assertIsNone(err) except AssertionError as err: logger.error('AssertionError ' + str(err) + '\n') try: utClass.assertIsInstance(results, dict)
form_cleaned, err = self.setFormCleaned(initial) if err is not None: return results, err try: results = WRCCUtils.request_and_format_data(form_cleaned) except Exception, e: err = "FAIL request_and_format_data. ERROR: " + str(e) + " PARAMS: " + str(params) return results, err if "data_summary" in params.keys() and params["data_summary"] == "windowed_data": d = copy.deepcopy(results["data"][0]) sd = params["start_date"] ed = params["end_date"] sw = params["start_window"] ew = params["end_window"] try: results["data"] = WRCCUtils.get_windowed_data(d, sd, ed, sw, ew) except Exception, e: results = {} err = "FAIL get_windowed_data. ERROR: " + str(e) + " PARAMS: " + str(params) return results, err return results, err def test_single_lister_results(self, utClass, results, err): if err is not None: logger.error(err + "\n") try: utClass.assertIsNone(err) except AssertionError as err: logger.error("AssertionError " + str(err) + "\n") try: utClass.assertIsInstance(results, dict)
def get_sodlist_data(form_input, program): ''' Data acquisition for sodlist,sodmonline(my), sodcnv Keyword arguments: form_input -- parameter file for data request obtained from user of WRCC SOD pages program -- specifies program that is making the request. ''' s_date, e_date = WRCCUtils.start_end_date_to_eight(form_input) station_id = form_input['station_id'] if program in ['sodlist', 'sodcnv']: if 'include_tobs_evap' in form_input.keys(): params = dict(sid='%s' % station_id, sdate=s_date, edate=e_date, \ elems=[dict(name='pcpn', add='f,t'), dict(name='snow', add='f,t'), dict(name='snwd', add='f,t'), dict(name='maxt', add='f,t'), dict(name='mint', add='f,t'), dict(name='obst', add='f,t')]) params_e = dict(sid='%s' % station_id, sdate=s_date, edate=e_date, elems=[dict(vX=7,add='f,t', prec=2)]) else: if not program == 'sodcnv': params = dict(sid='%s' % station_id, sdate=s_date, edate=e_date, \ elems=[dict(name='pcpn', add='f,t'), dict(name='snow', add='f,t'), dict(name='snwd', add='f,t'), dict(name='maxt', add='f,t'), dict(name='mint', add='f,t')]) else: params = dict(sid='%s' % station_id, sdate=s_date, edate=e_date, \ elems=[dict(name='pcpn', add='f,t'), dict(name='snow', add='f,t'), dict(name='snwd', add='f,t'), dict(name='maxt', add='f,t'), dict(name='mint', add='f,t'), dict(name='obst', add='f,t')]) elif program in ['sodmonline', 'sodmonlinemy']: #sodmonline(my) only available for full years s_date = '%s%s' % (s_date[0:4], '0101') e_date = '%s%s' % (e_date[0:4], '1231') if form_input['variable'] == 'evap': vXvN = 7 elif form_input['variable'] == 'wdmv': vXvN = 12 elif form_input['variable'] in ['wesf']: vXvN = 13 if form_input['variable'] in ['evap','wdmv', 'wesf' ]: #need to work with var major (vX) and var minor (vN) params = dict(sid='%s' % station_id, sdate=s_date, edate=e_date, elems=[vXvN]) elif form_input['variable'] in ['dtr', 'mmt']: params = dict(sid='%s' % station_id, sdate=s_date, edate=e_date, elems=[dict(name='maxt'), dict(name='mint')]) else: params = dict(sid='%s' % station_id, sdate=s_date, edate=e_date, elems=[dict(name='%s' % form_input['variable'])]) else: print 'Program %s not supported in get_sodlist_data. Program should be one out of [sodlist, sodcnv, sodmonline, sodmonlinemy]!' % program sys.exit(0) #Request evap, wind and water equivalent data #NOTE: these data need to be obtained via var major: if program == 'sodlist' and 'include_tobs_evap' in form_input.keys(): request_evap = StnData(params_e) if not request_evap: request_evap = {'error':'Bad request, check parameters.'} try: request_evap['data'] evap_data = request_evap['data'] except: evap_data = None else: evap_data = None #retrieve data via Acis webservices request = StnData(params) if not request: request = {'error':'Bad request, check parameters.'} #Test for successful data retrieval and get metadata information try: request['meta'] stn_name = request['meta']['name'] except: if request['error']: stn_name = ' ' try: request['data'] req_data = request['data'] except: req_data = None #get windowed data is program is sodlist if program == 'sodlist': if 'start_window' not in form_input.keys(): s_window = '0101' else: s_window = form_input['start_window'] if 'end_window' not in form_input.keys(): e_window = '1231' else: e_window = form_input['end_window'] if s_window!= '0101' or e_window != '1231': if req_data: data = WRCCUtils.get_windowed_data(req_data, s_date, e_date, s_window, e_window) else: data = None else: if req_data: data = req_data else: data = None else: if req_data: data = req_data else: data = None #Join evap_data if present if evap_data: for i, val in enumerate(evap_data): data[i].append(val[1]) return data, stn_name