fix: add init.py and refactor get_user_rank function

This commit is contained in:
prssanna 2019-08-21 16:25:46 +05:30
parent 4ce89cb8b0
commit 7491500142
3 changed files with 27 additions and 28 deletions

View file

@ -374,21 +374,13 @@ class UserProfile {
}
}
get_user_rank(date) {
get_user_rank() {
return frappe.xcall('frappe.desk.page.user_profile.user_profile.get_user_rank', {
user: this.user_id,
date: date || null,
}).then(r => {
if (r[0]) {
let user_rank = r[0];
//Check if monthly rank or all time rank
if (!date) {
this.rank = user_rank[1];
} else {
this.month_rank = user_rank[1];
}
}
if (r.monthly_rank[0]) this.month_rank = r.monthly_rank[0][1];
if (r.all_time_rank[0]) this.rank = r.all_time_rank[0][1];
});
}
@ -410,18 +402,14 @@ class UserProfile {
let $profile_details = this.wrapper.find('.profile-details');
this.get_user_rank().then(() => {
this.get_user_points().then(() => {
let html = $(__(`<p class="user-energy-points text-muted">${__('Energy Points: ')}<span class="rank">{0}</span></p>
<p class="user-energy-points text-muted">${__('Review Points: ')}<span class="rank">{1}</span></p>
<p class="user-energy-points text-muted">${__('Rank: ')}<span class="rank">{2}</span></p>
<p class="user-energy-points text-muted">${__('Monthly Rank: ')}<span class="rank">{3}</span></p>
`, [this.energy_points, this.review_points, this.rank, this.month_rank]));
this.get_user_rank(frappe.datetime.month_start()).then(() => {
this.get_user_points().then(() => {
let html = $(__(`<p class="user-energy-points text-muted">${__('Energy Points: ')}<span class="rank">{0}</span></p>
<p class="user-energy-points text-muted">${__('Review Points: ')}<span class="rank">{1}</span></p>
<p class="user-energy-points text-muted">${__('Rank: ')}<span class="rank">{2}</span></p>
<p class="user-energy-points text-muted">${__('Monthly Rank: ')}<span class="rank">{3}</span></p>
`, [this.energy_points, this.review_points, this.rank, this.month_rank]));
$profile_details.append(html);
});
$profile_details.append(html);
});
});
}

View file

@ -1,4 +1,5 @@
import frappe
from datetime import datetime
@frappe.whitelist()
def get_energy_points_heatmap_data(user, date):
@ -30,14 +31,24 @@ def get_energy_points_percentage_chart_data(user, field):
}
@frappe.whitelist()
def get_user_rank(user, date=None):
result = frappe.db.get_all('Energy Point Log',
group_by='user',
filters={'creation': ['>', date], 'type' : ['!=', 'Review']},
fields=['user', 'rank() over (order by sum(points) desc) as rank'],
def get_user_rank(user):
month_start = datetime.today().replace(day=1)
monthly_rank = frappe.db.get_all('Energy Point Log',
group_by = 'user',
filters = {'creation': ['>', month_start], 'type' : ['!=', 'Review']},
fields = ['user', 'rank() over (order by sum(points) desc) as rank'],
as_list = True)
return [r for r in result if r[0] == user]
all_time_rank = frappe.db.get_all('Energy Point Log',
group_by = 'user',
filters = {'type' : ['!=', 'Review']},
fields = ['user', 'rank() over (order by sum(points) desc) as rank'],
as_list = True)
return {
'monthly_rank': [r for r in monthly_rank if r[0] == user],
'all_time_rank': [r for r in all_time_rank if r[0] == user]
}
@frappe.whitelist()