diff --git a/weather_server/show_weather/views.py b/weather_server/show_weather/views.py index 578fa43..850240b 100644 --- a/weather_server/show_weather/views.py +++ b/weather_server/show_weather/views.py @@ -25,6 +25,8 @@ from django.template import Context from django.template.loader import get_template +import matplotlib.pyplot as plt + from .models import Station, Observation @@ -56,7 +58,6 @@ def csv_stations(request): response.seek(0) return HttpResponse(response) - def csv_observation_request(request, station, start, end): """Return CSV of observations in requested time range.""" response = StringIO() @@ -75,4 +76,22 @@ def csv_observation_request(request, station, start, end): ) ) response.seek(0) - return HttpResponse(response) + return HttpResponse(response, content_type="text/html") + +def png_observation_request(request, station, start, end): + """Return PNG of observations in requested time range.""" + obs = Observation.objects.filter(station__station_id=station, + obs_date__gte=start, + obs_date__lte=end) + + #TODO create n sub plots for all relevant parameter or merge them in 1 plot + # TODO how to loop over all elements and extract name along the way? + obsdata = [o.temperature for o in obs] + + fig = plt.figure() + ax1 = fig.add_subplot(1,1,1) + plt.plot(obsdata) + + response = HttpResponse(content_type="image/png") + plt.savefig(response, format="png") + return response diff --git a/weather_server/weather_server/urls.py b/weather_server/weather_server/urls.py index ac061f8..d4c0bee 100644 --- a/weather_server/weather_server/urls.py +++ b/weather_server/weather_server/urls.py @@ -19,16 +19,17 @@ """ from django.conf.urls import include, url from django.contrib import admin -from show_weather.views import index, csv_observation_request, csv_stations +from show_weather.views import index, csv_observation_request, csv_stations, png_observation_request data_patterns = [ - url(r'^csv/' - r'([0-9]+)/' # Station ID - r'([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2})' # Start date + url(r'^(?P[0-9]+)/' # Station ID + r'(?P[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2})' # Start date r' - ' - r'([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2})$', # End date - csv_observation_request), - url(r'^csv/stations/$', csv_stations) + r'(?P[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2})/', include([ # End date + url(r'csv$', csv_observation_request), + url(r'png$', png_observation_request),])), + url(r'^csv/stations/$', csv_stations), + ] urlpatterns = [