From 7491500142ee53f8ec7c52f7b73c7d03a6b659f2 Mon Sep 17 00:00:00 2001 From: prssanna Date: Wed, 21 Aug 2019 16:25:46 +0530 Subject: [PATCH] fix: add init.py and refactor get_user_rank function --- frappe/desk/page/user_profile/__init__.py | 0 frappe/desk/page/user_profile/user_profile.js | 32 ++++++------------- frappe/desk/page/user_profile/user_profile.py | 23 +++++++++---- 3 files changed, 27 insertions(+), 28 deletions(-) create mode 100644 frappe/desk/page/user_profile/__init__.py diff --git a/frappe/desk/page/user_profile/__init__.py b/frappe/desk/page/user_profile/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frappe/desk/page/user_profile/user_profile.js b/frappe/desk/page/user_profile/user_profile.js index f3a57a0c0e..486c64192e 100644 --- a/frappe/desk/page/user_profile/user_profile.js +++ b/frappe/desk/page/user_profile/user_profile.js @@ -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 = $(__(`

${__('Energy Points: ')}{0}

+

${__('Review Points: ')}{1}

+

${__('Rank: ')}{2}

+

${__('Monthly Rank: ')}{3}

+ `, [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 = $(__(`

${__('Energy Points: ')}{0}

-

${__('Review Points: ')}{1}

-

${__('Rank: ')}{2}

-

${__('Monthly Rank: ')}{3}

- `, [this.energy_points, this.review_points, this.rank, this.month_rank])); - - $profile_details.append(html); - }); + $profile_details.append(html); }); }); } diff --git a/frappe/desk/page/user_profile/user_profile.py b/frappe/desk/page/user_profile/user_profile.py index 4f3cc7aa9a..6060fc8163 100644 --- a/frappe/desk/page/user_profile/user_profile.py +++ b/frappe/desk/page/user_profile/user_profile.py @@ -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()