From 1b576555ec20cb59c7cd61d8375fe95601c3773f Mon Sep 17 00:00:00 2001 From: Ilya Shakhat <ishakhat@mirantis.com> Date: Tue, 14 Jan 2014 17:23:38 +0400 Subject: [PATCH] Add report with list of reviews that have only one +2 mark The report returns JSON containing subject of review, project, url, ids of reviewer and patch owner Change-Id: I08dd52c7626a519236a1a9f0541ad533ed63ba4b --- dashboard/reports.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/dashboard/reports.py b/dashboard/reports.py index 56d422ef5..29bec50e6 100644 --- a/dashboard/reports.py +++ b/dashboard/reports.py @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import collections import datetime import json import operator @@ -204,3 +205,36 @@ def get_commit_report(records): 'primary_key', 'change_id']]) response.append(nr) return response + + +@blueprint.route('/single_plus_two_reviews') +@decorators.jsonify() +@decorators.exception_handler() +@decorators.record_filter(ignore='metric') +def get_single_plus_two_reviews_report(records): + memory_storage_inst = vault.get_memory_storage() + plus_twos = collections.defaultdict(list) + for record in records: + if record['record_type'] != 'mark': + continue + + if (record['branch'] == 'master' and record['type'] == 'CRVW' and + record['value'] == +2): + review_id = record['review_id'] + review = memory_storage_inst.get_record_by_primary_key(review_id) + if review and review['status'] == 'MERGED': + plus_twos[review_id].append(record) + + response = [] + for review_id in plus_twos.keys(): + if len(plus_twos[review_id]) < 2: + mark = plus_twos[review_id][0] + review = memory_storage_inst.get_record_by_primary_key( + mark['review_id']) + response.append({'review_by': review['user_id'], + 'mark_by': mark['user_id'], + 'subject': review['subject'], + 'url': review['url'], + 'project': review['project']}) + + return response