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 test_plot_data_url(self): pt = Plottable("EDEN_7", "salinity", "2012-03-01", "2012-04-01") url = pt.data_url() print url self.assertEquals( url, "/eden/param_data_download?site_list=EDEN_7¶ms=salinity×eries_start=2012-03-01×eries_end=2012-04-01" )
def test_plot_data_url(self): pt = Plottable("EDEN_7", "salinity", "2012-03-01", "2012-04-01") url = pt.data_url() print url self.assertEquals( url, "/eden/param_data_download?site_list=EDEN_7¶ms=salinity×eries_start=2012-03-01×eries_end=2012-04-01", )
def test_station_title(self): class MockStation(object): station_name_web = "EDEN_3" short_name = "a_test_name" pt = Plottable(MockStation(), "temperature", "2004-02-01", "2004-04-01") self.assertEquals("A Test Name", pt.title()) self.assertEquals("EDEN_3", pt.gage_name) self.assertIn("Temperature", pt.label_y())
def param_page(request): template_name = 'eve_params.html' param_form = DataParamForm() if "clear_form" in request.REQUEST: return redirect(param_page) has_data = False # be careful about initial get with no parameters, # so we don't clobber the initial values if request.method == 'GET' and request.GET: param_form = DataParamForm(request.GET) has_data = True elif request.method == 'POST': param_form = DataParamForm(request.POST) has_data = True if has_data: if param_form.is_valid(): # Avoid the troublesome Nones. plot_params = {} for k, v in param_form.cleaned_data.items(): if v: plot_params[k] = v kwargs = { 'beginDate': param_form.cleaned_data['timeseries_start'], 'endDate': param_form.cleaned_data['timeseries_end'] } plottables = [] station_list = stage_queries.station_list( [param_form.cleaned_data['site_list']]) for s in station_list: for p in param_form.cleaned_data['params']: pt = Plottable(s, p, **kwargs) plottables.append(pt) render_params = { 'param_form': param_form, 'plottables': plottables, 'EDEN_URL': settings.EDEN_URL, } return render(request, template_name, render_params) else: # error in input return render(request, template_name, { 'param_form': param_form, 'EDEN_URL': settings.EDEN_URL }, status=400) return render(request, template_name, { 'param_form': param_form, 'EDEN_URL': settings.EDEN_URL })
def _plot_simple(gage, p, beginDate=None, endDate=None, format='png', show_logo=True): station_list = stage_queries.station_list([gage]) pt = Plottable(station_list[0], p, beginDate, endDate) data_seq = pt.sequence() if show_logo: title = pt.title() else: title = None if not format in _mime_types: return HttpResponseBadRequest("Unknown image format: " + format) response = HttpResponse(content_type=_mime_types[format]) hydrograph.png_simple(data_seq, response, beginDate=beginDate, endDate=endDate, format=format, show_logo=show_logo, title=title, y_label=pt.label_y()) return response
def param_data_download(request): form = DataParamForm(request.GET) if form.is_valid(): _logger.info("requested plot data 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() response = HttpResponse(content_type='text/csv') stage_data.write_csv(data_seq, response) return response else: return HttpResponseBadRequest(",".join(form.errors))
def _plot_simple(gage, p, beginDate=None, endDate=None, format="png", show_logo=True): station_list = stage_queries.station_list([gage]) pt = Plottable(station_list[0], p, beginDate, endDate) data_seq = pt.sequence() if show_logo: title = pt.title() if not format in _mime_types: return HttpResponseBadRequest("Unknown image format: " + format) response = HttpResponse(content_type=_mime_types[format]) hydrograph.png_simple( data_seq, response, beginDate=beginDate, endDate=endDate, format=format, show_logo=show_logo, title=title, y_label=pt.label_y(), ) return response
def param_data_download(request): form = DataParamForm(request.GET) if form.is_valid(): _logger.info( "requested plot data 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() response = HttpResponse(content_type="text/csv") stage_data.write_csv(data_seq, response) 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))
endDate="2006-11-12") station = ss[0] ct = png_single_station(data, "/tmp/hg6b.png", station, beginDate=dateutil.parser.parse("2006-10-15"), endDate=dateutil.parser.parse("2006-11-12"), show_logo=False) print "hg6b.png", ct gage = "EDEN_3" p = "rainfall" beginDate = datetime.date(2013, 01, 01) endDate = datetime.date(2013, 3, 1) station_list = stage_queries.station_list([gage]) pt = Plottable(station_list[0], p, beginDate, endDate) data_seq = pt.sequence() show_logo = True # Let logo also drive title display if show_logo: title = pt.title() png_simple(data_seq, "/tmp/hg7.png", beginDate=beginDate, endDate=endDate, show_logo=show_logo, title=title,
def test_id(self): pt = Plottable("EDEN_7", "temperature", "2012-03-01", "2012-04-01") self.assertEquals("EDEN_7_temperature", pt.id())
def test_no_data_pos(self): pt = Plottable("EDEN_3", "salinity", "2012-03-01", "2012-04-01") for t in pt.sequence(): self.assertEquals(2, len(t))
def test_labels(self): pt = Plottable("EDEN_3", "salinity", "2012-03-01", "2012-04-01") self.assertEquals("Date", pt.label_x()) self.assertEquals("Salinity", pt.label_y())
def test_no_data_neg(self): with self.assertRaises(NoData): pt = Plottable("2A300", "temperature") for t in pt.sequence(): print t
def test_rainfall(self): pt = Plottable("GAGE", "rainfall") self.assertEquals(pt.gage_name, "GAGE") self.assertEquals(pt.param, "rainfall")
def test_oops_1(self): with self.assertRaises(TypeError): pt = Plottable("GAGE", "bogus") print pt.data_url()
print "hg6a.png", ct data, ss = stage_queries.data_for_plot_hourly(['CV5NR'], beginDate="2006-10-15", endDate="2006-11-12") station = ss[0] ct = png_single_station(data, "/tmp/hg6b.png", station, beginDate=dateutil.parser.parse("2006-10-15"), endDate=dateutil.parser.parse("2006-11-12"), show_logo=False) print "hg6b.png", ct gage = "EDEN_3" p = "rainfall" beginDate = datetime.date(2013, 01, 01) endDate = datetime.date(2013, 3, 1) station_list = stage_queries.station_list([gage]) pt = Plottable(station_list[0], p, beginDate, endDate) data_seq = pt.sequence() show_logo = True # Let logo also drive title display if show_logo: title = pt.title() png_simple(data_seq, "/tmp/hg7.png", beginDate=beginDate, endDate=endDate, show_logo=show_logo, title=title, y_label=pt.label_y()) print "hg7.png" data_seq = pt.sequence() png_simple(data_seq, "/tmp/hg7.svg", format="svg", beginDate=beginDate, endDate=endDate,