diff --git a/frappe/core/doctype/user/user.py b/frappe/core/doctype/user/user.py
index 60a8119f10..adc054197a 100644
--- a/frappe/core/doctype/user/user.py
+++ b/frappe/core/doctype/user/user.py
@@ -12,6 +12,8 @@ from frappe.utils.user import get_system_managers
import frappe.permissions
import frappe.share
import re
+import json
+
from frappe.limits import get_limits
from frappe.website.utils import is_signup_enabled
from frappe.utils.background_jobs import enqueue
@@ -1086,4 +1088,12 @@ def generate_keys(user):
user_details.save()
return {"api_secret": api_secret}
- frappe.throw(frappe._("Not Permitted"), frappe.PermissionError)
\ No newline at end of file
+ frappe.throw(frappe._("Not Permitted"), frappe.PermissionError)
+
+@frappe.whitelist()
+def update_profile_info(profile_info):
+ profile_info = json.loads(profile_info)
+ user = frappe.get_doc('User', frappe.session.user)
+ user.update(profile_info)
+ user.save()
+ return user
\ No newline at end of file
diff --git a/frappe/public/js/frappe/social/Home.vue b/frappe/public/js/frappe/social/Home.vue
index cf112dcb92..7aa752e6db 100644
--- a/frappe/public/js/frappe/social/Home.vue
+++ b/frappe/public/js/frappe/social/Home.vue
@@ -60,10 +60,6 @@ export default {
this.show_preview = false;
})
- frappe.app_updates.on('user_image_updated', () => {
- this.$root.$emit('user_image_updated')
- })
-
this.update_primary_action(frappe.get_route()[1])
},
mounted() {
diff --git a/frappe/public/js/frappe/social/components/EnergyPointHistory.vue b/frappe/public/js/frappe/social/components/EnergyPointHistory.vue
index 87b9a3e339..bf9b765a4c 100644
--- a/frappe/public/js/frappe/social/components/EnergyPointHistory.vue
+++ b/frappe/public/js/frappe/social/components/EnergyPointHistory.vue
@@ -22,13 +22,13 @@
diff --git a/frappe/public/js/frappe/social/pages/UserList.vue b/frappe/public/js/frappe/social/pages/UserList.vue
index 2007593ce2..3983d39aa8 100644
--- a/frappe/public/js/frappe/social/pages/UserList.vue
+++ b/frappe/public/js/frappe/social/pages/UserList.vue
@@ -3,47 +3,53 @@
- -
+
+ -
-
+
{{ user.fullname }}
-
- {{ frappe.ellipsis(user.bio, 100) || 'No Bio'}}
-
+ {{ frappe.ellipsis(user.bio, 100) || 'No Bio'}}
-
-
- {{ user.energy_points }}
-
-
- {{ user.review_points }}
-
-
- {{ user.given_points }}
+
{{ user[key] }}
-
+ :from_date="from_date"
+ :key="user.name + user.energy_points"
+ >
- {{__('No user found')}}
@@ -61,17 +67,33 @@ export default {
filter_users_by: null,
sort_users_by: 'energy_points',
sort_order: 'desc',
- show_log_for: null
- }
+ show_log_for: null,
+ period_options: ['Lifetime', 'Last Month', 'Last Week', 'Today'],
+ period: 'Lifetime'
+ };
},
computed: {
+ from_date() {
+ const days_to_deduct = {
+ 'Last Week': 7,
+ 'Last Month': 30
+ };
+ if (this.period === 'Lifetime') {
+ return null;
+ }
+ if (this.period === 'Today') {
+ return frappe.datetime.get_today();
+ }
+ return frappe.datetime.add_days(moment(), -days_to_deduct[this.period]);
+ },
filtered_users() {
let filtered = this.users.slice();
-
if (this.filter_users_by) {
filtered = filtered.filter(user =>
- user.fullname.toLowerCase().includes(this.filter_users_by.toLowerCase())
- )
+ user.fullname
+ .toLowerCase()
+ .includes(this.filter_users_by.toLowerCase())
+ );
}
if (this.sort_users_by) {
@@ -89,15 +111,23 @@ export default {
}
if (this.sort_order === 'desc') {
- return_value = -return_value
+ return_value = -return_value;
}
- return return_value
+ return return_value;
});
}
return filtered;
}
},
+ watch: {
+ period() {
+ this.fetch_users_energy_points_and_update_users();
+ }
+ },
+ mounted() {
+ $('[data-toggle="tooltip"]').tooltip();
+ },
created() {
const standard_users = ['Administrator', 'Guest', 'guest@example.com'];
this.users = frappe.boot.user_info;
@@ -111,37 +141,42 @@ export default {
},
methods: {
get_avatar(user) {
- return frappe.avatar(user, 'avatar-medium')
+ return frappe.avatar(user, 'avatar-medium');
},
go_to_profile_page(user) {
- frappe.set_route('social', 'profile', user)
+ frappe.set_route('social', 'profile', user);
},
fetch_users_energy_points_and_update_users() {
- frappe.xcall(
- 'frappe.social.doctype.energy_point_log.energy_point_log.get_user_energy_and_review_points'
- ).then(data => {
- let users = this.users.slice();
- this.users = users.map(user => {
- const points = data[user.name] || {};
- user.energy_points = points.energy_points || 0;
- user.review_points = points.review_points || 0;
- user.given_points = points.given_points || 0;
- return user;
+ frappe
+ .xcall(
+ 'frappe.social.doctype.energy_point_log.energy_point_log.get_user_energy_and_review_points',
+ {
+ from_date: this.from_date
+ }
+ )
+ .then(data => {
+ let users = this.users.slice();
+ this.users = users.map(user => {
+ const points = data[user.name] || {};
+ user.energy_points = points.energy_points || 0;
+ user.review_points = points.review_points || 0;
+ user.given_points = points.given_points || 0;
+ return user;
+ });
});
- });
},
toggle_log(user) {
if (this.show_log_for === user) {
- this.show_log_for = null
+ this.show_log_for = null;
} else {
- this.show_log_for = user
+ this.show_log_for = user;
}
}
}
-}
+};