def index(): custom_datastreams = [ (stream, {'href': link['href'][0:-5] + '/totals', 'title': 'total ' + link['title']} ) for stream, link in API.get_custom_datastreams(current_user)] connected_datastreams = [(stream, link) for stream, link in DEFAULT_DATASTREAMS if stream in current_user.uids.keys()] form = ChartForm(custom_datastreams + connected_datastreams, request.form) chart_data = API.get_chart_data( current_user, form.datastream.data, form.group_by.data.split(',') ) if request.method == 'POST' and form.validate(): group_by_heading = dict(form.group_by.choices)[form.group_by.data] datastream_heading = dict(form.datastream.choices)[form.datastream.data] series = [{ 'name': datastream_heading, 'color': 'steelblue', 'data': utils.format_chart_data(chart_data['data']) }] else: series = None group_by_heading = None datastream_heading = None return render_template('%s/index.html' % app.name, form = form, series = series, group_by_heading = group_by_heading, datastream_heading = datastream_heading )
def json_for_buff(user, buff, colors): chart_series = [] for path in buff['paths']: chart_data = API.get_chart_data(user, path, buff['group_by'], start = "%s-%s-%s" % tuple(buff['start']), end = buff['end'].strftime('%Y-%m-%d' ) if buff['end'] else datetime.datetime.now(pytz.utc ).strftime('%Y-%m-%d') ) chart_series.append({ 'name': (chart_data['_links']['self']['title'] ) if '_links' in chart_data and 'title' in chart_data['_links']['self' ] else path.replace('/', ' ').title(), 'color': colors.next(), 'data': format_chart_data(chart_data['data']) }) return normalize_chart_series(chart_series)