def ping_max(station_id): cache_key = 'ping_max_'+station_id max = cache.get(cache_key) if max == None: max = Ping.max(station_id) cache.set(cache_key,max,60*60*24) return max
def ping_avg(request, station_id): ping_list = Ping.avg_by_hour(station_id) return render_to_response('ping_avg.html', { 'ping_list': ping_list })
def ping_today(request,station_id): pings = ET.Element("pings") for ping in Ping.today(station_id): pings.append(ET.Element('ping', hour=str(ping["time"]), bikes=str(ping['bikes']), free=str(ping['free']) )) return __XmlResponse(pings)
def __ping_avg(request,station_id,days): "csv view for avg_by hour" response = HttpResponse(mimetype='text/csv') writer = csv.writer(response) writer.writerow(['bikes','free']) for ping in Ping.avg_by_hour(station_id,days): writer.writerow([ping['bikes'],ping['free']]) return response
def ping_today(request,station_id): "csv view for today" response = HttpResponse(mimetype='text/csv') writer = csv.writer(response) writer.writerow(['bikes','free']) for ping in Ping.today(station_id): writer.writerow([ping['bikes'],ping['free']]) return response
def ping_last_24_hours(request,station_id): "csv view for last 24 hours" response = HttpResponse(mimetype='text/csv') writer = csv.writer(response) writer.writerow(['bikes','free','hour']) for ping in Ping.last_24_hours(station_id): writer.writerow([ping['bikes'],ping['free'],ping['hour']]) return response
def ping_last_24_hours(request,station_id): "json view for last 24 hours" bikes = [] free = [] hours = [] for ping in Ping.last_24_hours(station_id): bikes.append(int(ping['bikes'])) free.append(int(ping['free'])) hours.append(str(ping['hour'])) elements = [ { "colour": "#ff0000", "type": "line_dot", "values": bikes, "text": "bikes", "dot-size": 3, }, { "type": "line_dot", "colour": "#00ff00", "values": free, "text": "free places", "dot-size": 3, }, ] graph = { "title": { "text": "Average By Hour" }, "elements": elements, "y_axis": { "min": 0, "max": 39, "steps": 3 }, "x_axis": { "labels": { "labels" : hours }, } } return HttpResponse(json.dumps(graph))
def __ping_avg(request,station_id,days): "json view for avg_by hour" max = ping_max(station_id) bikes = [] free = [] for ping in Ping.avg_by_hour(station_id,days): bikes.append(int(ping['bikes'])) free.append(int(ping['free'])) elements = [ { "colour": "#ff0000", "type": "line_dot", "values": bikes, "text": "bikes", "dot-size": 3, }, { "type": "line_dot", "colour": "#00ff00", "values": free, "text": "free places", "dot-size": 3, }, ] graph = { "title": { "text": "Average By Hour" }, "elements": elements, "y_axis": { "min": 0, "max": max['max'], "steps": 3 } } return HttpResponse(json.dumps(graph))
def ping_last_24_hours(request,station_id): return __pings(Ping.last_24_hours(station_id))
def ping_avg_weekend(request,station_id): return __pings(Ping.avg_by_hour(station_id,[5,6]))
def ping_avg_weekday(request,station_id): return __pings(Ping.avg_by_hour(station_id,[0,1,2,3,4]))
def ping_avg(request,station_id): return __pings(Ping.avg_by_hour(station_id,[0,1,2,3,4,5,6]))
def ping_today(request,station_id): "json view for today" max = ping_max(station_id) bikes = [] free = [] broken = [] for ping in Ping.today(station_id): bikes.append({ "y": float(ping['bikes']), "x": float(ping['time']) }) free.append({ "y": float(ping['free']), "x": float(ping['time']) }) broken.append({ "y": max['max']-float(ping['bikes'])-float(ping['free']), "x": float(ping['time']) }) elements = [ { "colour": "#ff0000", "type": "scatter_line", "values": bikes, "text": "bikes", "dot-size": 1, }, { "type": "scatter_line", "colour": "#00ff00", "values": free, "text": "free places", "dot-size": 1, }, { "type": "scatter_line", "colour": "#000000", "values": broken, "text": "maybe broken", "dot-size": 1, }, ] graph = { "title": { "text": "Average By Half Hour" }, "elements": elements, "y_axis": { "min": 0, "max": max['max'], "steps": 3 }, "x_axis": { "min": 0, "max": 24 } } return HttpResponse(json.dumps(graph))