def daily_download(request): form = TimeSeriesFilterForm(request.GET) if form.is_valid(): gages = form.cleaned_data["site_list"] _logger.info("hourly csv download, gages is %s" % (gages)) beginDate = form.cleaned_data["timeseries_start"] endDate = form.cleaned_data["timeseries_end"] station_dict = stage_queries.station_dict(gages) beginDate = form.cleaned_data["timeseries_start"] endDate = form.cleaned_data["timeseries_end"] q, dt = stage_queries.daily_query(*station_dict.values()) if beginDate: q = q.where(dt >= beginDate) if endDate: q = q.where(dt <= endDate) data = q.execute() # data_type = 'Hourly Water Level, NAVD88(ft)' # hard coded for now... maybe this could be in the form where the user's can selected between hourly and daily data query_metadata_list = create_metadata_header( HEADER_MESSAGE, EDEN_CONTACT, END_OF_HEADER, form.cleaned_data, station_dict.values() ) response = HttpResponse(content_type="text/csv") stage_data.write_rdb(data, response, metadata=query_metadata_list) return response else: return HttpResponseBadRequest(",".join(form.errors)) pass
def param_rdb_download(request): form = DataParamForm(request.GET) if form.is_valid(): _logger.info( "requested data download for %s with params %s" % (form.cleaned_data["site_list"], form.cleaned_data["params"]) ) beginDate = form.cleaned_data["timeseries_start"] endDate = form.cleaned_data["timeseries_end"] gage = form.cleaned_data["site_list"] p = form.cleaned_data["params"][0] station_list = stage_queries.station_list([gage]) pt = Plottable(station_list[0], p, beginDate, endDate) data_seq = pt.sequence() # fifth parameter to create_metadata_header is list of Station objects station_list = stage_queries.station_list([gage]) query_metadata_list = create_metadata_header( GENERAL_MESSAGE, EDEN_CONTACT, END_OF_HEADER, form.cleaned_data, station_list, water_level=False ) response = HttpResponse(content_type="text/csv") stage_data.write_rdb(data_seq, response, metadata=query_metadata_list) return response else: return HttpResponseBadRequest(",".join(form.errors))
def daily_download(request): form = TimeSeriesFilterForm(request.GET) if (form.is_valid()): gages = form.cleaned_data['site_list'] _logger.info("hourly csv download, gages is %s" % (gages)) beginDate = form.cleaned_data["timeseries_start"] endDate = form.cleaned_data["timeseries_end"] station_dict = stage_queries.station_dict(gages) beginDate = form.cleaned_data["timeseries_start"] endDate = form.cleaned_data["timeseries_end"] q, dt = stage_queries.daily_query(*station_dict.values()) if beginDate: q = q.where(dt >= beginDate) if endDate: q = q.where(dt <= endDate) data = q.execute() # data_type = 'Hourly Water Level, NAVD88(ft)' # hard coded for now... maybe this could be in the form where the user's can selected between hourly and daily data query_metadata_list = create_metadata_header(HEADER_MESSAGE, EDEN_CONTACT, END_OF_HEADER, form.cleaned_data, station_dict.values()) response = HttpResponse(content_type='text/csv') stage_data.write_rdb(data, response, metadata=query_metadata_list) return response else: return HttpResponseBadRequest(",".join(form.errors)) pass
def timeseries_csv_download(request): # TODO Pull gage list up to list of model objects form = TimeSeriesFilterForm(request.GET) if (form.is_valid()): gages = form.cleaned_data['site_list'] _logger.info("csv download, gages is %s" % (gages)) beginDate = form.cleaned_data["timeseries_start"] endDate = form.cleaned_data["timeseries_end"] station_qs = Station.objects.filter(station_name_web__in=gages) query_metadata_list = create_metadata_header(HEADER_MESSAGE, EDEN_CONTACT, END_OF_HEADER, form.cleaned_data, station_qs) response = HttpResponse(content_type='text/csv') results = stage_data.data_for_download( gages, beginDate=beginDate, endDate=endDate ) stage_data.write_rdb(results, response, metadata=query_metadata_list) return response else: return HttpResponseBadRequest(",".join(form.errors))
def test_write_no_header(self): results = _MockResults() outfile = StringIO() stage_data.write_rdb(results, outfile) expected_h = "a\tb\tc\r\n" expected_t = "12s\t12s\t12s\r\n" expected_d = "1\t2\t3\r\n2\t3\t4\r\n" expected = expected_h + expected_t + expected_d self.assertEquals(expected, outfile.getvalue())
def test_write_with_header(self): results = _MockResults() outfile = StringIO() md = ["hello", "world"] stage_data.write_rdb(results, outfile, metadata=md) expected_head = "# hello\r\n# world\r\n" expected_h = "a\tb\tc\r\n" expected_t = "12s\t12s\t12s\r\n" expected_d = "1\t2\t3\r\n2\t3\t4\r\n" expected_body = expected_h + expected_t + expected_d self.assertEquals(expected_head + expected_body, outfile.getvalue())
def timeseries_csv_download(request): # TODO Pull gage list up to list of model objects form = TimeSeriesFilterForm(request.GET) if form.is_valid(): gages = form.cleaned_data["site_list"] _logger.info("csv download, gages is %s" % (gages)) beginDate = form.cleaned_data["timeseries_start"] endDate = form.cleaned_data["timeseries_end"] station_qs = Station.objects.filter(station_name_web__in=gages) query_metadata_list = create_metadata_header( HEADER_MESSAGE, EDEN_CONTACT, END_OF_HEADER, form.cleaned_data, station_qs ) response = HttpResponse(content_type="text/csv") results = stage_data.data_for_download(gages, beginDate=beginDate, endDate=endDate) stage_data.write_rdb(results, response, metadata=query_metadata_list) return response else: return HttpResponseBadRequest(",".join(form.errors))
def param_rdb_download(request): form = DataParamForm(request.GET) if form.is_valid(): _logger.info("requested data download for %s with params %s" % (form.cleaned_data['site_list'], form.cleaned_data['params'])) beginDate = form.cleaned_data["timeseries_start"] endDate = form.cleaned_data["timeseries_end"] gage = form.cleaned_data['site_list'] p = form.cleaned_data['params'][0] station_list = stage_queries.station_list([gage]) pt = Plottable(station_list[0], p, beginDate, endDate) data_seq = pt.sequence() # fifth parameter to create_metadata_header is list of Station objects station_list = stage_queries.station_list([gage]) query_metadata_list = create_metadata_header(GENERAL_MESSAGE, EDEN_CONTACT, END_OF_HEADER, form.cleaned_data, station_list, water_level=False) response = HttpResponse(content_type='text/csv') stage_data.write_rdb(data_seq, response, metadata=query_metadata_list) return response else: return HttpResponseBadRequest(",".join(form.errors))