Ejemplo n.º 1
0
 def from_data(
     cls,
     metric_name: str,
     today_timestamp: int,
     offsets: List[Tuple[str, int]],
     current_values: Dict[str, int],
     metric_data: Dict[str, Dict[str, int]],
     color_overrides: FrozenSet[str],
 ) -> 'Metric':
     return cls(
         metric_name,
         metric_name in color_overrides,
         current_values[metric_name],
         tuple(
             Delta(
                 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),
     )
Ejemplo n.º 2
0
def show(metric_name, start_timestamp, end_timestamp):
    start_timestamp = int(start_timestamp)
    end_timestamp = int(end_timestamp)
    metric_info = logic.get_metric_info(flask.g.db, metric_name)

    metric_changes = sorted(
        logic.get_major_changes_for_metric(
            flask.g.db,
            start_timestamp,
            end_timestamp,
            metric_info.id,
        ))
    metric_changes = [(
        datetime.datetime.fromtimestamp(timestamp).strftime(
            '%Y-%m-%d %H:%M:%S', ),
        sha,
        CommitDelta.from_data(
            metric_name,
            Delta('javascript:;', value),
            color_overrides=flask.g.config.color_overrides,
        ),
    ) for timestamp, sha, value in metric_changes]

    override_classname = ('color-override' if metric_name
                          in flask.g.config.color_overrides else '')

    rendered_template = render_template(
        'changes.mako',
        changes=metric_changes,
        override_classname=override_classname,
    )

    return json.dumps({'body': rendered_template})
Ejemplo n.º 3
0
 def from_data(
     cls,
     metric_name,
     today_timestamp,
     offsets,
     current_values,
     metric_data,
     color_overrides,
 ):
     return cls(
         metric_name,
         metric_name in color_overrides,
         current_values[metric_name],
         tuple(
             Delta(
                 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),
     )
Ejemplo n.º 4
0
def data() -> str:
    metric_names = frozenset(flask.g.config.widget_metrics)
    diff = flask.request.form['diff'].encode('UTF-8')

    metric_config = GenerateOptions.from_yaml(
        yaml.load(open('generate_config.yaml').read()),
    )
    parsers = get_metric_parsers_from_args(
        metric_config.metric_package_names, skip_defaults=False,
    )
    metrics = get_metrics(BLANK_COMMIT, diff, parsers, metric_config.exclude)
    metrics = tuple(
        metric for metric in metrics
        if metric.value and metric.name in metric_names
    )

    commit_deltas = sorted(
        CommitDelta.from_data(
            metric.name, Delta('javascript:;', metric.value),
            color_overrides=flask.g.config.color_overrides,
        )
        for metric in metrics
    )
    return json.dumps({
        'metrics': render_template('widget.mako', commit_deltas=commit_deltas),
    })
Ejemplo n.º 5
0
def show(sha: str) -> str:
    changes = logic.get_metric_changes(flask.g.db, sha)

    commit_deltas = sorted(
        CommitDelta.from_data(
            metric_name,
            Delta('javascript:;', change),
            color_overrides=flask.g.config.color_overrides,
        ) for metric_name, change in changes)

    links = [(link_name, link.format(sha=sha))
             for link_name, link in flask.g.config.commit_links]

    return render_template(
        'commit.mako',
        sha=sha,
        short_sha=sha[:8],
        commit_deltas=commit_deltas,
        links=links,
    )
Ejemplo n.º 6
0
def test_delta_classname_zero():
    delta = Delta('url', 0)
    assert delta.classname == 'metric-none'
Ejemplo n.º 7
0
def test_delta_classname_negative():
    delta = Delta('url', -9001)
    assert delta.classname == 'metric-down'
Ejemplo n.º 8
0
def test_delta_classname_positive():
    delta = Delta('url', 9001)
    assert delta.classname == 'metric-up'