def data(): metric_names = set(widget_metrics) diff = flask.request.form['diff'].encode('UTF-8') metric_config = GenerateOptions.from_yaml( yaml.load(io.open('generate_config.yaml').read()), ) parsers = get_metric_parsers_from_args( metric_config.metric_package_names, skip_defaults=False, ) metrics = get_metrics(diff, parsers) metrics = [ metric for metric in metrics if metric.value and metric.name in metric_names ] commit_deltas = sorted([ CommitDeltaPresenter.from_data( metric.name, DeltaPresenter('javascript:;', metric.value), ) for metric in metrics ]) return simplejson.dumps({ 'metrics': render_template('widget.mako', commit_deltas=commit_deltas) })
def show(metric_name, start_timestamp, end_timestamp): start_timestamp = int(start_timestamp) end_timestamp = int(end_timestamp) metric_changes = sorted( logic.get_major_changes_for_metric( flask.g.db, start_timestamp, end_timestamp, metric_name, )) metric_changes = [(datetime.datetime.fromtimestamp(timestamp).strftime( '%Y-%m-%d %H:%M:%S', ), sha, CommitDeltaPresenter.from_data( metric_name, DeltaPresenter('javascript:;', value), )) for timestamp, sha, value in metric_changes] override_classname = ('color-override' if metric_name in metric_config.color_overrides else '') rendered_template = render_template( 'changes.mako', changes=metric_changes, override_classname=override_classname, ) return simplejson.dumps({'body': rendered_template})
def from_data( cls, metric_name, today_timestamp, offsets, current_values, metric_data, ): return cls( metric_name, metric_name in color_overrides, current_values[metric_name], tuple( DeltaPresenter( flask.url_for( 'graph.show', metric_name=metric_name, start=str(timestamp), end=str(today_timestamp), ), (current_values[metric_name] - metric_data[time_name][metric_name]), ) for time_name, timestamp in offsets), flask.url_for('graph.all_data', metric_name=metric_name), )
def show(sha): changes = logic.get_metric_changes(flask.g.db, sha) commit_deltas = sorted([ CommitDeltaPresenter.from_data( metric_name, DeltaPresenter('javascript:;', change), ) for metric_name, change in changes ]) links = [ (link_name, link.format(sha=sha)) for link_name, link in metric_config.commit_links ] return render_template( 'commit.mako', sha=sha, short_sha=sha[:8], commit_deltas=commit_deltas, links=links, )
def test_delta_classname_negative(): delta = DeltaPresenter('url', -9001) assert delta.classname == 'metric-down'
def test_delta_classname_positive(): delta = DeltaPresenter('url', 9001) assert delta.classname == 'metric-up'
def test_delta_classname_zero(): delta = DeltaPresenter('url', 0) assert delta.classname == 'metric-none'