diff --git a/dashboard/templates/overview.html b/dashboard/templates/overview.html
index 738941376..e2e76a33f 100644
--- a/dashboard/templates/overview.html
+++ b/dashboard/templates/overview.html
@@ -1,7 +1,7 @@
{% extends "layout.html" %}
{% set show_company_breakdown = (not company) and (not user_id) %}
-{% set show_engineer_breakdown = ((company) or (module)) and (not user_id) %}
+{% set show_engineer_breakdown = (not user_id) %}
{% set show_bp_breakdown = (module) and (not user_id) and (metric == 'bpd!') %}
{% set show_module_breakdown = (not module) %}
{% set show_user_activity = (user_id) %}
@@ -11,6 +11,7 @@
{% set show_module_contribution = (module) and (not user_id) %}
{% set show_contribution = (show_user_contribution) or (show_module_contribution) %}
{% set show_user_profile = (user_id) %}
+{% set show_top_mentors_options = (metric == 'tm_marks') %}
{% block scripts %}
+
+
+
+
+ {% endif %}
+{% endblock %}
+
{% block left_frame %}
{% if show_company_breakdown %}
@@ -214,7 +254,7 @@
| # |
Engineer |
{{ metric_label }} |
- {% if metric in ['marks', 'nc_marks'] %}
+ {% if metric in ['marks', 'tm_marks'] %}
-2|-1|+1|+2 (+/- ratio) |
{% endif %}
diff --git a/dashboard/web.py b/dashboard/web.py
index de619292f..347fb507b 100644
--- a/dashboard/web.py
+++ b/dashboard/web.py
@@ -41,13 +41,14 @@ DEFAULTS = {
'metric': 'commits',
'release': 'havana',
'project_type': 'openstack',
+ 'review_nth': 5,
}
METRIC_LABELS = {
'loc': 'Lines of code',
'commits': 'Commits',
'marks': 'Reviews',
- 'nc_marks': 'Newcomers Reviews',
+ 'tm_marks': 'Top Mentors',
'emails': 'Emails',
'bpd': 'Drafted Blueprints',
'bpc': 'Completed Blueprints',
@@ -57,7 +58,7 @@ METRIC_TO_RECORD_TYPE = {
'loc': 'commit',
'commits': 'commit',
'marks': 'mark',
- 'nc_marks': 'mark',
+ 'tm_marks': 'mark',
'emails': 'email',
'bpd': 'bpd',
'bpc': 'bpc',
@@ -349,15 +350,16 @@ def record_filter(ignore=None, use_default=True):
record_ids &= memory_storage.get_record_ids_by_type(
METRIC_TO_RECORD_TYPE[metric])
- if metric == 'nc_marks':
- filtered_ids = []
- for record in memory_storage.get_records(record_ids):
- parent = memory_storage.get_record_by_primary_key(
- record['review_id'])
- if (parent and ('review_attempt' in parent)
- and (parent['review_attempt'] <= 5)):
- filtered_ids.append(record['record_id'])
- record_ids = filtered_ids
+ if 'tm_marks' in metrics:
+ filtered_ids = []
+ review_nth = int(get_parameter(kwargs, 'review_nth')[0])
+ for record in memory_storage.get_records(record_ids):
+ parent = memory_storage.get_record_by_primary_key(
+ record['review_id'])
+ if (parent and ('review_number' in parent) and
+ (parent['review_number'] <= review_nth)):
+ filtered_ids.append(record['record_id'])
+ record_ids = filtered_ids
kwargs['records'] = memory_storage.get_records(record_ids)
return f(*args, **kwargs)
@@ -416,7 +418,7 @@ def aggregate_filter():
'commits': (incremental_filter, None),
'loc': (loc_filter, None),
'marks': (mark_filter, mark_finalize),
- 'nc_marks': (mark_filter, mark_finalize),
+ 'tm_marks': (mark_filter, mark_finalize),
'emails': (incremental_filter, None),
'bpd': (incremental_filter, None),
'bpc': (incremental_filter, None),
@@ -509,6 +511,8 @@ def templated(template=None, return_code=200):
else:
release = releases[release]['release_name']
ctx['release'] = (release or get_default('release')).lower()
+ ctx['review_nth'] = (flask.request.args.get('review_nth') or
+ get_default('review_nth'))
ctx['project_type_options'] = get_project_type_options()
ctx['release_options'] = get_release_options()
@@ -659,7 +663,7 @@ def get_activity_json(records):
parent = memory_storage_inst.get_record_by_primary_key(
review['review_id'])
if parent:
- review['review_attempt'] = parent.get('review_attempt')
+ review['review_number'] = parent.get('review_number')
review['subject'] = parent['subject']
review['url'] = parent['url']
review['parent_author_link'] = make_link(
diff --git a/stackalytics/processor/record_processor.py b/stackalytics/processor/record_processor.py
index f493b5f69..a344c341a 100644
--- a/stackalytics/processor/record_processor.py
+++ b/stackalytics/processor/record_processor.py
@@ -411,10 +411,10 @@ class RecordProcessor(object):
reviews_index = {}
for launchpad_id, reviews in users_reviews.iteritems():
reviews.sort(key=lambda x: x['date'])
- review_attempt = 0
+ review_number = 0
for review in reviews:
- review_attempt += 1
- review['review_attempt'] = review_attempt
+ review_number += 1
+ review['review_number'] = review_number
reviews_index[review['id']] = review
for record in self.runtime_storage_inst.get_all_records():
@@ -453,8 +453,8 @@ class RecordProcessor(object):
if record['record_type'] == 'review':
review = reviews_index[record['id']]
- if record.get('review_attempt') != review['review_attempt']:
- record['review_attempt'] = review['review_attempt']
+ if record.get('review_number') != review['review_number']:
+ record['review_number'] = review['review_number']
need_update = True
if need_update: