Company activity report is implemented

* Added links to company report
* Fixed punch-card to always show all days and all hours
* Contribution details template is extracted into macro

Change-Id: Ie9965f93dcd5d658b69bf38e6e947cd2f8ad6cdd
This commit is contained in:
Ilya Shakhat 2013-10-29 19:50:51 +04:00
parent ba5d16c463
commit c65cdc7b22
4 changed files with 83 additions and 18 deletions

View File

@ -130,6 +130,12 @@ def _get_punch_card_data(records):
if v:
punch_card_data.append([hour, wday, v, v])
# add corner point, otherwise chart doesn't know the bounds
if punch_card_raw[0][0] == 0:
punch_card_data.append([0, 0, 0, 0])
if punch_card_raw[6][23] == 0:
punch_card_data.append([23, 6, 0, 0])
return punch_card_data
@ -159,6 +165,30 @@ def user_activity(user_id):
}
@blueprint.route('/companies/<company>')
@decorators.templated()
@decorators.exception_handler()
def company_activity(company):
memory_storage_inst = vault.get_memory_storage()
original_name = memory_storage_inst.get_original_company_name(company)
memory_storage_inst = vault.get_memory_storage()
records = memory_storage_inst.get_records(
memory_storage_inst.get_record_ids_by_companies([original_name]))
activity = helpers.get_activity(records, 0, -1)
punch_card_data = _get_punch_card_data(activity)
return {
'company': original_name,
'activity': activity[:parameters.DEFAULT_STATIC_ACTIVITY_SIZE],
'total_records': len(activity),
'contribution': helpers.get_contribution_summary(activity),
'punch_card_data': json.dumps(punch_card_data),
}
@blueprint.route('/large_commits')
@decorators.jsonify('commits')
@decorators.exception_handler()

View File

@ -63,7 +63,8 @@
<h3>{{ item.date_str}} &mdash; commit &ldquo;{{item.subject}}&rdquo; to {{ item.module }}</h3>
<div>Author: <a href="{{ item.user_id }}">{{ item.author_name }}</a> ({{ item.company_name }})</div>
<div>Author: <a href="/report/users/{{ item.user_id }}">{{ item.author_name }}</a>
(<a href="/report/companies/{{ item.company_name }}">{{ item.company_name }}</a>)</div>
<div class="message">{{ item.message | safe }}</div>
<div><span style="color: green">+<span>{{ item.lines_added }}</span></span>
@ -78,7 +79,10 @@
<h3>{{ item.date_str}} &mdash; review &ldquo;{{item.subject}}&rdquo; in {{ item.module }}</h3>
<div>Patch submitted by: <a href="{{ item.parent_user_id }}">{{ item.parent_author_name }}</a> ({{ item.parent_company_name }})</div>
<div>Reviewer: <a href="/report/users/{{ item.user_id }}">{{ item.author_name }}</a>
(<a href="/report/companies/{{ item.company_name }}">{{ item.company_name }}</a>)</div>
<div>Submitter: <a href="/report/users/{{ item.parent_user_id }}">{{ item.parent_author_name }}</a>
(<a href="/report/companies/{{ item.company_name }}">{{ item.parent_company_name }}</a>)</div>
<div>Change Id: <a href="{{item.url}}">{{item.review_id}}</a></div>
<div style="color: {% if item.value > 0 %} green {% else %} blue {% endif %}">
{{item.description}}: <span class="review_mark">{{item.value}}</span></div>
@ -87,7 +91,8 @@
<h3>{{ item.date_str}} &mdash; patch &ldquo;{{item.subject}}&rdquo; posted into {{ item.module }}</h3>
<div>Author: <a href="/report/users/{{ item.user_id }}">{{ item.author_name }}</a> ({{ item.company_name }})</div>
<div>Author: <a href="/report/users/{{ item.user_id }}">{{ item.author_name }}</a>
(<a href="/report/companies/{{ item.company_name }}">{{ item.company_name }}</a>)</div>
<div>Current Status: {{ item.status }}</div>
<div>URL: <a href="{{item.url}}">{{item.url}}</a></div>
<div>Change Id: <a href="{{item.url}}">{{item.id}}</a></div>
@ -96,7 +101,8 @@
<h3>{{ item.date_str}} &mdash; email &ldquo;{{item.subject}}&rdquo;</h3>
<div>Author: <a href="/report/users/{{ item.user_id }}">{{ item.author_name }}</a> ({{ item.company_name }})</div>
<div>Author: <a href="/report/users/{{ item.user_id }}">{{ item.author_name }}</a>
(<a href="/report/companies/{{ item.company_name }}">{{ item.company_name }}</a>)</div>
{% if item.body %}
<div class="message">{{ item.body|safe }}</div>
{% endif %}
@ -105,7 +111,8 @@
<h3>{{ item.date_str}} &mdash; blueprint &ldquo;{{item.title}}&rdquo; in {{ item.module }}</h3>
<div>Author: <a href="/report/users/{{ item.user_id }}">{{ item.author_name }}</a> ({{ item.company_name }})</div>
<div>Author: <a href="/report/users/{{ item.user_id }}">{{ item.author_name }}</a>
(<a href="/report/companies/{{ item.parent_company_name }}">{{ item.parent_company_name }}</a>)</div>
<div>Launchpad: <a href="https://blueprints.launchpad.net/{{ item.module }}/+spec/{{ item.name }}">https://blueprints.launchpad.net/{{ item.module }}/+spec/{{ item.name }}</a></div>
<div>Report: {{ item.blueprint_link | safe}}</div>
{% if item.summary %}
@ -121,6 +128,21 @@
{%- endmacro %}
{% macro show_contribution_summary(contribution) -%}
<h2>Contribution summary</h2>
<ul>
<li>Total commits: {{ contribution.commit_count }}</li>
<li>Total LOC: {{ contribution.loc }}</li>
<li>Review stat (-2, -1, +1, +2): {{ contribution.marks[-2] }}, {{ contribution.marks[-1] }},
{{ contribution.marks[1] }}, {{ contribution.marks[2] }}</li>
<li>Draft Blueprints: {{ contribution.drafted_blueprint_count }}</li>
<li>Completed Blueprints: {{ contribution.completed_blueprint_count }}</li>
<li>Emails: {{ contribution.email_count }}</li>
</ul>
{%- endmacro %}
<div id="analytics_header" style="padding-bottom: 1em; border-bottom: 1px solid darkgrey;">
<span id="logo"><a href="/">Stackalytics</a></span>
<span id="slogan">| community heartbeat</span>

View File

@ -0,0 +1,24 @@
{% extends "reports/base_report.html" %}
{% block title %}
{{ company }} activity report
{% endblock %}
{% block head %}
<script type="text/javascript">
$(document).ready(function () {
render_punch_card("punch_card", [{{ punch_card_data }}]);
});
</script>
{% endblock %}
{% block body %}
<h1>{{ company }} activity report</h1>
{{ show_contribution_summary(contribution) }}
<div id="punch_card" style="width: 100%; height: 350px;"></div>
{{ show_activity_log(activity, false) }}
{% endblock %}

View File

@ -15,21 +15,10 @@
{% block body %}
<h1>{{ user.user_name }} activity report</h1>
<h2>Contribution summary</h2>
<ul>
<li>Total commits: {{ contribution.commit_count }}</li>
<li>Total LOC: {{ contribution.loc }}</li>
<li>Review stat (-2, -1, +1, +2): {{ contribution.marks[-2] }}, {{ contribution.marks[-1] }},
{{ contribution.marks[1] }}, {{ contribution.marks[2] }}</li>
<li>Draft Blueprints: {{ contribution.drafted_blueprint_count }}</li>
<li>Completed Blueprints: {{ contribution.completed_blueprint_count }}</li>
<li>Emails: {{ contribution.email_count }}</li>
</ul>
{{ show_contribution_summary(contribution) }}
<div id="punch_card" style="width: 100%; height: 350px;"></div>
{% if activity %}
{{ show_activity_log(activity, false) }}
{% endif %}
{{ show_activity_log(activity, false) }}
{% endblock %}