diff --git a/frappe/boot.py b/frappe/boot.py
index c6d754bf53..636948359d 100644
--- a/frappe/boot.py
+++ b/frappe/boot.py
@@ -21,10 +21,6 @@ from frappe.permissions import has_permission
from frappe.query_builder import DocType
from frappe.query_builder.functions import Count
from frappe.query_builder.terms import ParameterizedValueWrapper, SubQuery
-from frappe.social.doctype.energy_point_log.energy_point_log import get_energy_points
-from frappe.social.doctype.energy_point_settings.energy_point_settings import (
- is_energy_point_enabled,
-)
from frappe.utils import add_user_info, cstr, get_system_timezone
from frappe.utils.change_log import get_versions
from frappe.utils.frappecloud import on_frappecloud
@@ -99,10 +95,7 @@ def get_bootinfo():
bootinfo.lang_dict = get_lang_dict()
bootinfo.success_action = get_success_action()
bootinfo.update(get_email_accounts(user=frappe.session.user))
- bootinfo.energy_points_enabled = is_energy_point_enabled()
- bootinfo.website_tracking_enabled = is_tracking_enabled()
bootinfo.sms_gateway_enabled = bool(frappe.db.get_single_value("SMS Settings", "sms_gateway_url"))
- bootinfo.points = get_energy_points(frappe.session.user)
bootinfo.frequently_visited_links = frequently_visited_links()
bootinfo.link_preview_doctypes = get_link_preview_doctypes()
bootinfo.additional_filters_config = get_additional_filters_from_hooks()
diff --git a/frappe/cache_manager.py b/frappe/cache_manager.py
index 4e648b9fb6..91c9376e67 100644
--- a/frappe/cache_manager.py
+++ b/frappe/cache_manager.py
@@ -6,7 +6,6 @@ import frappe
common_default_keys = ["__default", "__global"]
doctypes_for_mapping = {
- "Energy Point Rule",
"Assignment Rule",
"Milestone Tracker",
"Document Naming Rule",
diff --git a/frappe/core/doctype/doctype/doctype.json b/frappe/core/doctype/doctype/doctype.json
index 4c98bb6788..5c550637b6 100644
--- a/frappe/core/doctype/doctype/doctype.json
+++ b/frappe/core/doctype/doctype/doctype.json
@@ -773,11 +773,6 @@
"group": "Rules",
"link_doctype": "Assignment Rule",
"link_fieldname": "document_type"
- },
- {
- "group": "Rules",
- "link_doctype": "Energy Point Rule",
- "link_fieldname": "reference_doctype"
}
],
"modified": "2025-03-27 18:16:53.286909",
diff --git a/frappe/core/doctype/scheduled_job_type/test_scheduled_job_type.py b/frappe/core/doctype/scheduled_job_type/test_scheduled_job_type.py
index e00f0173bb..134f7b0741 100644
--- a/frappe/core/doctype/scheduled_job_type/test_scheduled_job_type.py
+++ b/frappe/core/doctype/scheduled_job_type/test_scheduled_job_type.py
@@ -84,7 +84,7 @@ class TestScheduledJobType(IntegrationTestCase):
def test_weekly_job(self):
job = frappe.get_doc(
"Scheduled Job Type",
- dict(method="frappe.social.doctype.energy_point_log.energy_point_log.send_weekly_summary"),
+ dict(method="frappe.desk.form.document_follow.send_weekly_updates"),
)
job.db_set("last_execution", "2019-01-01 00:00:00")
self.assertTrue(job.is_event_due(get_datetime("2019-01-06 00:10:01"))) # +10 min because of jitter
diff --git a/frappe/core/doctype/user/user.json b/frappe/core/doctype/user/user.json
index c050f699ba..a673f6226c 100644
--- a/frappe/core/doctype/user/user.json
+++ b/frappe/core/doctype/user/user.json
@@ -853,11 +853,6 @@
"link_doctype": "Activity Log",
"link_fieldname": "user"
},
- {
- "group": "Logs",
- "link_doctype": "Energy Point Log",
- "link_fieldname": "user"
- },
{
"group": "Logs",
"link_doctype": "Route History",
diff --git a/frappe/core/doctype/user/user.py b/frappe/core/doctype/user/user.py
index 51eee70976..04d7daf970 100644
--- a/frappe/core/doctype/user/user.py
+++ b/frappe/core/doctype/user/user.py
@@ -573,9 +573,6 @@ class User(Document):
frappe.db.delete("OAuth Authorization Code", {"user": self.name})
frappe.db.delete("Token Cache", {"user": self.name})
- # Delete EPS data
- frappe.db.delete("Energy Point Log", {"user": self.name})
-
# Remove user link from Workflow Action
frappe.db.set_value("Workflow Action", {"user": self.name}, "user", None)
diff --git a/frappe/desk/doctype/notification_log/notification_log.py b/frappe/desk/doctype/notification_log/notification_log.py
index 0812c56499..79a013fc0e 100644
--- a/frappe/desk/doctype/notification_log/notification_log.py
+++ b/frappe/desk/doctype/notification_log/notification_log.py
@@ -29,7 +29,7 @@ class NotificationLog(Document):
link: DF.Data | None
read: DF.Check
subject: DF.Text | None
- type: DF.Literal["", "Mention", "Energy Point", "Assignment", "Share", "Alert"]
+ type: DF.Literal["", "Mention", "Assignment", "Share", "Alert"]
# end: auto-generated types
def after_insert(self):
@@ -103,11 +103,7 @@ def make_notification_logs(doc, users):
notification = frappe.new_doc("Notification Log")
notification.update(doc)
notification.for_user = user
- if (
- notification.for_user != notification.from_user
- or doc.type == "Energy Point"
- or doc.type == "Alert"
- ):
+ if notification.for_user != notification.from_user or doc.type == "Alert":
notification.insert(ignore_permissions=True)
@@ -119,9 +115,6 @@ def _get_user_ids(user_emails):
def send_notification_email(doc: NotificationLog):
- if doc.type == "Energy Point" and doc.email_content is None:
- return
-
from frappe.utils import get_url_to_form, strip_html
user = frappe.db.get_value("User", doc.for_user, fieldname=["email", "language"], as_dict=True)
@@ -158,7 +151,6 @@ def get_email_header(doc, language: str | None = None):
"Mention": _("New Mention on {0}", lang=language).format(docname),
"Assignment": _("Assignment Update on {0}", lang=language).format(docname),
"Share": _("New Document Shared {0}", lang=language).format(docname),
- "Energy Point": _("Energy Point Update on {0}", lang=language).format(docname),
}
return header_map[doc.type or "Default"]
diff --git a/frappe/desk/doctype/notification_settings/notification_settings.json b/frappe/desk/doctype/notification_settings/notification_settings.json
index d64bf3fe4d..d06aebc369 100644
--- a/frappe/desk/doctype/notification_settings/notification_settings.json
+++ b/frappe/desk/doctype/notification_settings/notification_settings.json
@@ -13,13 +13,10 @@
"enable_email_mention",
"enable_email_assignment",
"enable_email_threads_on_assigned_document",
- "enable_email_energy_point",
"enable_email_share",
"enable_email_event_reminders",
"user",
- "seen",
- "system_notifications_section",
- "energy_points_system_notifications"
+ "seen"
],
"fields": [
{
@@ -59,13 +56,6 @@
"fieldtype": "Check",
"label": "Assignments"
},
- {
- "default": "1",
- "depends_on": "enable_email_notifications",
- "fieldname": "enable_email_energy_point",
- "fieldtype": "Check",
- "label": "Energy Points"
- },
{
"default": "1",
"depends_on": "enable_email_notifications",
@@ -89,17 +79,6 @@
"hidden": 1,
"label": "Seen"
},
- {
- "fieldname": "system_notifications_section",
- "fieldtype": "Section Break",
- "label": "System Notifications"
- },
- {
- "default": "1",
- "fieldname": "energy_points_system_notifications",
- "fieldtype": "Check",
- "label": "Energy Points"
- },
{
"default": "1",
"depends_on": "enable_email_notifications",
@@ -119,7 +98,7 @@
"in_create": 1,
"index_web_pages_for_search": 1,
"links": [],
- "modified": "2024-03-23 16:03:31.952985",
+ "modified": "2025-04-16 17:15:25.641232",
"modified_by": "Administrator",
"module": "Desk",
"name": "Notification Settings",
@@ -139,8 +118,9 @@
}
],
"read_only": 1,
+ "row_format": "Dynamic",
"sort_field": "creation",
"sort_order": "DESC",
"states": [],
"track_changes": 1
-}
\ No newline at end of file
+}
diff --git a/frappe/desk/doctype/notification_settings/notification_settings.py b/frappe/desk/doctype/notification_settings/notification_settings.py
index 691c03588d..8c0925e372 100644
--- a/frappe/desk/doctype/notification_settings/notification_settings.py
+++ b/frappe/desk/doctype/notification_settings/notification_settings.py
@@ -18,14 +18,12 @@ class NotificationSettings(Document):
from frappe.types import DF
enable_email_assignment: DF.Check
- enable_email_energy_point: DF.Check
enable_email_event_reminders: DF.Check
enable_email_mention: DF.Check
enable_email_notifications: DF.Check
enable_email_share: DF.Check
enable_email_threads_on_assigned_document: DF.Check
enabled: DF.Check
- energy_points_system_notifications: DF.Check
seen: DF.Check
subscribed_documents: DF.TableMultiSelect[NotificationSubscribedDocument]
user: DF.Link | None
diff --git a/frappe/desk/form/load.py b/frappe/desk/form/load.py
index 83f1d5c0bf..565306f07b 100644
--- a/frappe/desk/form/load.py
+++ b/frappe/desk/form/load.py
@@ -123,7 +123,6 @@ def get_docinfo(doc=None, doctype=None, name=None):
"permissions": get_doc_permissions(doc),
"shared": get_docshares(doc),
"views": get_view_logs(doc),
- "energy_point_logs": get_point_logs(doc.doctype, doc.name),
"additional_timeline_content": get_additional_timeline_content(doc.doctype, doc.name),
"milestones": get_milestones(doc.doctype, doc.name),
"is_document_followed": is_document_followed(doc.doctype, doc.name, frappe.session.user),
@@ -246,19 +245,6 @@ def get_comments(doctype: str, name: str, comment_type: str | list[str] = "Comme
return comments
-def get_point_logs(doctype, docname):
- from frappe.social.doctype.energy_point_settings.energy_point_settings import is_energy_point_enabled
-
- if not is_energy_point_enabled():
- return []
-
- return frappe.get_all(
- "Energy Point Log",
- filters={"reference_doctype": doctype, "reference_name": docname, "type": ["!=", "Review"]},
- fields=["*"],
- )
-
-
def _get_communications(doctype, name, start=0, limit=20):
communications = get_communication_data(doctype, name, start, limit)
for c in communications:
diff --git a/frappe/desk/leaderboard.py b/frappe/desk/leaderboard.py
deleted file mode 100644
index 4800a7d945..0000000000
--- a/frappe/desk/leaderboard.py
+++ /dev/null
@@ -1,50 +0,0 @@
-import frappe
-from frappe.utils import get_fullname
-
-
-def get_leaderboards():
- return {
- "User": {
- "fields": ["points"],
- "method": "frappe.desk.leaderboard.get_energy_point_leaderboard",
- "company_disabled": 1,
- "icon": "users",
- }
- }
-
-
-@frappe.whitelist()
-def get_energy_point_leaderboard(date_range, company=None, field=None, limit=None):
- users = frappe.get_list(
- "User",
- filters={
- "name": ["not in", ["Administrator", "Guest"]],
- "enabled": 1,
- "user_type": ["!=", "Website User"],
- },
- pluck="name",
- )
-
- filters = [["type", "!=", "Review"], ["user", "in", users]]
- if date_range:
- date_range = frappe.parse_json(date_range)
- filters.append(["creation", "between", [date_range[0], date_range[1]]])
- energy_point_users = frappe.get_all(
- "Energy Point Log",
- fields=["user as name", "sum(points) as value"],
- filters=filters,
- group_by="user",
- order_by="value desc",
- )
-
- energy_point_users_list = list(map(lambda x: x["name"], energy_point_users))
- for user in users:
- if user not in energy_point_users_list:
- energy_point_users.append({"name": user, "value": 0})
-
- for user in energy_point_users:
- user_id = user["name"]
- user["name"] = get_fullname(user["name"])
- user["formatted_name"] = f'{get_fullname(user_id)}'
-
- return energy_point_users
diff --git a/frappe/desk/page/leaderboard/__init__.py b/frappe/desk/page/leaderboard/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/frappe/desk/page/leaderboard/leaderboard.css b/frappe/desk/page/leaderboard/leaderboard.css
deleted file mode 100644
index d15b4ffcd4..0000000000
--- a/frappe/desk/page/leaderboard/leaderboard.css
+++ /dev/null
@@ -1,85 +0,0 @@
-.list-filters {
- overflow-y: hidden;
- padding: 5px
-}
-
-.list-filter-item {
- min-width: 150px;
- float: left;
- margin: 5px;
-}
-
-.list-item_content {
- flex: 1;
- padding-right: 15px;
- align-items: center;
-}
-
-.select-time, .select-doctype, .select-filter, .select-sort {
- background: #f0f4f7;
-}
-
-.from-date-field .clearfix{
- display: none;
-}
-
-.from-date-field {
- margin-left: 10px;
-}
-
-.select-time:focus, .select-doctype:focus, .select-filter:focus, .select-sort:focus {
- background: #f0f4f7;
-}
-
-.header-btn-base {
- border: none;
- outline: 0;
- vertical-align: middle;
- overflow: hidden;
- text-decoration: none;
- color: inherit;
- background-color: inherit;
- cursor: pointer;
- white-space: nowrap;
-}
-
-.header-btn-round {
- border-radius: 4px;
-}
-
-.item-title-bold {
- font-weight: bold;
-}
-
-.rank {
- max-width: 100px;
-}
-
-.leaderboard .result {
- border-top: 1px solid var(--border-color);
-}
-
-.leaderboard .list-item {
- padding-left: 45px;
-}
-
-.leaderboard .list-item_content {
- padding-right: 60px;
-}
-
-.leaderboard-sidebar {
- padding-left: 0;
- position: fixed;
-}
-
-.leaderboard-list {
- padding: var(-padding-sm) 0;
- min-height: 70vh;
-}
-
-.leaderboard-empty-state {
- align-items: center;
- height: 70vh;
- justify-content: center;
- display: flex;
-}
diff --git a/frappe/desk/page/leaderboard/leaderboard.js b/frappe/desk/page/leaderboard/leaderboard.js
deleted file mode 100644
index a832e2cfb0..0000000000
--- a/frappe/desk/page/leaderboard/leaderboard.js
+++ /dev/null
@@ -1,409 +0,0 @@
-frappe.pages["leaderboard"].on_page_load = (wrapper) => {
- frappe.leaderboard = new Leaderboard(wrapper);
-
- $(wrapper).bind("show", () => {
- // Get which leaderboard to show
- let doctype = frappe.get_route()[1];
- frappe.leaderboard.show_leaderboard(doctype);
- });
-};
-
-class Leaderboard {
- constructor(parent) {
- frappe.ui.make_app_page({
- parent: parent,
- title: __("Leaderboard"),
- single_column: false,
- card_layout: true,
- });
-
- this.parent = parent;
- this.page = this.parent.page;
- this.page.sidebar.html(
- `
`).append($value);
- return $item_container[0].outerHTML;
- })
- .join("");
-
- return `
`;
- }
-
- render_message() {
- const display_class = this.message ? "" : "hide";
- return `
-
-

-
${this.message}
-
-
`;
- }
-
- get_item_html(item, index) {
- const fields = this.leaderboard_config[this.options.selected_doctype].fields;
- const value = frappe.format(
- item.value,
- fields.find((field) => {
- let fieldname = field.fieldname || field;
- return fieldname === this.options.selected_filter_item;
- })
- );
-
- const link = `/app/${frappe.router.slug(this.options.selected_doctype)}/${item.name}`;
- const name_html = item.formatted_name
- ? `
${item.formatted_name}`
- : `
${item.name} `;
- return `
-
- ${index}
-
-
- ${name_html}
-
-
- ${value}
-
-
`;
- }
-
- get_sidebar_item(item, icon) {
- let icon_html = icon ? frappe.utils.icon(icon, "md") : "";
- return $(`
- ${icon_html}
-
- `);
- }
-
- get_date_range() {
- let timespan = this.options.selected_timespan.toLowerCase();
- let current_date = frappe.datetime.now_date();
- let date_range_map = {
- "this week": [frappe.datetime.week_start(), frappe.datetime.week_end()],
- "this month": [frappe.datetime.month_start(), frappe.datetime.month_end()],
- "this quarter": [frappe.datetime.quarter_start(), frappe.datetime.quarter_end()],
- "this year": [frappe.datetime.year_start(), frappe.datetime.year_end()],
- "last week": [frappe.datetime.add_days(current_date, -7), current_date],
- "last month": [frappe.datetime.add_months(current_date, -1), current_date],
- "last quarter": [frappe.datetime.add_months(current_date, -3), current_date],
- "last year": [frappe.datetime.add_months(current_date, -12), current_date],
- "all time": null,
- "select date range": this.selected_date_range || [
- frappe.datetime.month_start(),
- current_date,
- ],
- };
- return date_range_map[timespan];
- }
-}
diff --git a/frappe/desk/page/leaderboard/leaderboard.json b/frappe/desk/page/leaderboard/leaderboard.json
deleted file mode 100644
index 0f0b8d88cd..0000000000
--- a/frappe/desk/page/leaderboard/leaderboard.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "content": null,
- "creation": "2017-06-06 02:54:24.785360",
- "docstatus": 0,
- "doctype": "Page",
- "idx": 0,
- "modified": "2019-09-27 17:44:51.909947",
- "modified_by": "Administrator",
- "module": "Desk",
- "name": "leaderboard",
- "owner": "Administrator",
- "page_name": "leaderboard",
- "roles": [],
- "script": null,
- "standard": "Yes",
- "style": null,
- "system_page": 0,
- "title": "Leaderboard"
-}
\ No newline at end of file
diff --git a/frappe/desk/page/leaderboard/leaderboard.py b/frappe/desk/page/leaderboard/leaderboard.py
deleted file mode 100644
index 0ad4538a81..0000000000
--- a/frappe/desk/page/leaderboard/leaderboard.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
-# License: MIT. See LICENSE
-import frappe
-
-
-@frappe.whitelist()
-def get_leaderboard_config():
- leaderboard_config = frappe._dict()
- leaderboard_hooks = frappe.get_hooks("leaderboards")
- for hook in leaderboard_hooks:
- leaderboard_config.update(frappe.get_attr(hook)())
-
- return leaderboard_config
diff --git a/frappe/desk/page/user_profile/__init__.py b/frappe/desk/page/user_profile/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/frappe/desk/page/user_profile/user_profile.css b/frappe/desk/page/user_profile/user_profile.css
deleted file mode 100644
index 9bcfc3394a..0000000000
--- a/frappe/desk/page/user_profile/user_profile.css
+++ /dev/null
@@ -1,30 +0,0 @@
-.recent-activity .new-timeline {
- padding-top: 0;
-}
-
-.recent-activity .new-timeline:before {
- top: 25px;
-}
-
-.recent-activity-title {
- font-weight: 700;
- font-size: var(--text-xl);
- color: var(--text-color);
-}
-
-.recent-activity .recent-activity-footer {
- margin-left: calc(var(--timeline-left-padding) + var(--timeline-item-left-margin));
- max-width: var(--timeline-content-max-width);
-}
-
-.recent-activity .show-more-activity-btn {
- display: block;
- margin: auto;
- width: max-content;
- margin-top: 35px;
- font-size: var(--text-md);
-}
-
-.recent-activity {
- padding-bottom: 60px;
-}
\ No newline at end of file
diff --git a/frappe/desk/page/user_profile/user_profile.html b/frappe/desk/page/user_profile/user_profile.html
deleted file mode 100644
index f134441b74..0000000000
--- a/frappe/desk/page/user_profile/user_profile.html
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
{%=__("Recent Activity") %}
-
-
-
-
-
diff --git a/frappe/desk/page/user_profile/user_profile.js b/frappe/desk/page/user_profile/user_profile.js
deleted file mode 100644
index e4cef59cc7..0000000000
--- a/frappe/desk/page/user_profile/user_profile.js
+++ /dev/null
@@ -1,6 +0,0 @@
-frappe.pages["user-profile"].on_page_load = function (wrapper) {
- frappe.require("user_profile_controller.bundle.js", () => {
- let user_profile = new frappe.ui.UserProfile(wrapper);
- user_profile.show();
- });
-};
diff --git a/frappe/desk/page/user_profile/user_profile.json b/frappe/desk/page/user_profile/user_profile.json
deleted file mode 100644
index 43385f50a4..0000000000
--- a/frappe/desk/page/user_profile/user_profile.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "content": null,
- "creation": "2019-07-22 12:23:38.425877",
- "docstatus": 0,
- "doctype": "Page",
- "idx": 0,
- "modified": "2020-03-02 15:17:13.041650",
- "modified_by": "Administrator",
- "module": "Desk",
- "name": "user-profile",
- "owner": "Administrator",
- "page_name": "User Profile",
- "roles": [
- {
- "role": "All"
- }
- ],
- "script": null,
- "standard": "Yes",
- "style": null,
- "system_page": 0,
- "title": "User Profile"
-}
\ No newline at end of file
diff --git a/frappe/desk/page/user_profile/user_profile.py b/frappe/desk/page/user_profile/user_profile.py
deleted file mode 100644
index 3013df54a5..0000000000
--- a/frappe/desk/page/user_profile/user_profile.py
+++ /dev/null
@@ -1,112 +0,0 @@
-from datetime import datetime
-
-import frappe
-from frappe.query_builder import Interval, Order
-from frappe.query_builder.functions import Date, Sum, UnixTimestamp
-from frappe.utils import getdate
-
-
-@frappe.whitelist()
-def get_energy_points_heatmap_data(user, date):
- try:
- date = getdate(date)
- except Exception:
- date = getdate()
-
- eps_log = frappe.qb.DocType("Energy Point Log")
-
- return dict(
- frappe.qb.from_(eps_log)
- .select(UnixTimestamp(Date(eps_log.creation)), Sum(eps_log.points))
- .where(eps_log.user == user)
- .where(eps_log["type"] != "Review")
- .where(Date(eps_log.creation) > Date(date) - Interval(years=1))
- .where(Date(eps_log.creation) < Date(date) + Interval(years=1))
- .groupby(Date(eps_log.creation))
- .orderby(Date(eps_log.creation), order=Order.asc)
- .run()
- )
-
-
-@frappe.whitelist()
-def get_energy_points_percentage_chart_data(user, field):
- result = frappe.get_all(
- "Energy Point Log",
- filters={"user": user, "type": ["!=", "Review"]},
- group_by=field,
- order_by=field,
- fields=[field, "ABS(sum(points)) as points"],
- as_list=True,
- )
-
- return {
- "labels": [r[0] for r in result if r[0] is not None],
- "datasets": [{"values": [r[1] for r in result]}],
- }
-
-
-@frappe.whitelist()
-def get_user_rank(user):
- month_start = datetime.today().replace(day=1)
- monthly_rank = frappe.get_all(
- "Energy Point Log",
- group_by="`tabEnergy Point Log`.`user`",
- filters={"creation": [">", month_start], "type": ["!=", "Review"]},
- fields=["user", "sum(points)"],
- order_by="sum(points) desc",
- as_list=True,
- )
-
- all_time_rank = frappe.get_all(
- "Energy Point Log",
- group_by="`tabEnergy Point Log`.`user`",
- filters={"type": ["!=", "Review"]},
- fields=["user", "sum(points)"],
- order_by="sum(points) desc",
- as_list=True,
- )
-
- return {
- "monthly_rank": [i + 1 for i, r in enumerate(monthly_rank) if r[0] == user],
- "all_time_rank": [i + 1 for i, r in enumerate(all_time_rank) if r[0] == user],
- }
-
-
-@frappe.whitelist()
-def update_profile_info(profile_info):
- profile_info = frappe.parse_json(profile_info)
- keys = ["location", "interest", "user_image", "bio"]
-
- for key in keys:
- if key not in profile_info:
- profile_info[key] = None
-
- user = frappe.get_doc("User", frappe.session.user)
- user.update(profile_info)
- user.save()
- return user
-
-
-@frappe.whitelist()
-def get_energy_points_list(start, limit, user):
- return frappe.db.get_list(
- "Energy Point Log",
- filters={"user": user, "type": ["!=", "Review"]},
- fields=[
- "name",
- "user",
- "points",
- "reference_doctype",
- "reference_name",
- "reason",
- "type",
- "seen",
- "rule",
- "owner",
- "creation",
- "revert_of",
- ],
- start=start,
- limit=limit,
- order_by="creation desc",
- )
diff --git a/frappe/desk/page/user_profile/user_profile_controller.js b/frappe/desk/page/user_profile/user_profile_controller.js
deleted file mode 100644
index abf0bea297..0000000000
--- a/frappe/desk/page/user_profile/user_profile_controller.js
+++ /dev/null
@@ -1,494 +0,0 @@
-import BaseTimeline from "../../../public/js/frappe/form/footer/base_timeline";
-frappe.provide("frappe.energy_points");
-
-class UserProfile {
- constructor(wrapper) {
- this.wrapper = $(wrapper);
- this.page = frappe.ui.make_app_page({
- parent: wrapper,
- });
- this.sidebar = this.wrapper.find(".layout-side-section");
- this.main_section = this.wrapper.find(".layout-main-section");
- this.wrapper.bind("show", () => {
- this.show();
- });
- }
-
- show() {
- let route = frappe.get_route();
- this.user_id = route[1] || frappe.session.user;
- frappe.dom.freeze(__("Loading user profile") + "...");
- frappe.db.exists("User", this.user_id).then((exists) => {
- frappe.dom.unfreeze();
- if (exists) {
- this.make_user_profile();
- } else {
- frappe.msgprint(__("User does not exist"));
- }
- });
- }
-
- make_user_profile() {
- this.user = frappe.user_info(this.user_id);
- this.page.set_title(this.user.fullname);
- this.setup_user_search();
- this.main_section.empty().append(frappe.render_template("user_profile"));
- this.energy_points = 0;
- this.review_points = 0;
- this.rank = 0;
- this.month_rank = 0;
- this.render_user_details();
- this.render_points_and_rank();
- this.render_heatmap();
- this.render_line_chart();
- this.render_percentage_chart("type", "Type Distribution");
- this.create_percentage_chart_filters();
- this.setup_user_activity_timeline();
- }
-
- setup_user_search() {
- this.$user_search_button = this.page.set_secondary_action(
- __("Change User"),
- () => this.show_user_search_dialog(),
- { icon: "change", size: "sm" }
- );
- }
-
- show_user_search_dialog() {
- let dialog = new frappe.ui.Dialog({
- title: __("Change User"),
- fields: [
- {
- fieldtype: "Link",
- fieldname: "user",
- options: "User",
- label: __("User"),
- },
- ],
- primary_action_label: __("Go"),
- primary_action: ({ user }) => {
- dialog.hide();
- frappe.set_route("user-profile", user);
- },
- });
- dialog.show();
- }
-
- render_heatmap() {
- this.heatmap = new frappe.Chart(".performance-heatmap", {
- type: "heatmap",
- countLabel: __("Energy Points"),
- data: {},
- discreteDomains: 1,
- radius: 3,
- height: 150,
- });
- this.update_heatmap_data();
- this.create_heatmap_chart_filters();
- }
-
- update_heatmap_data(date_from) {
- frappe
- .xcall("frappe.desk.page.user_profile.user_profile.get_energy_points_heatmap_data", {
- user: this.user_id,
- date: date_from || frappe.datetime.year_start(),
- })
- .then((r) => {
- this.heatmap.update({ dataPoints: r });
- });
- }
-
- render_line_chart() {
- this.line_chart_filters = [
- ["Energy Point Log", "user", "=", this.user_id, false],
- ["Energy Point Log", "type", "!=", "Review", false],
- ];
-
- this.line_chart_config = {
- timespan: "Last Month",
- time_interval: "Daily",
- type: "Line",
- value_based_on: "points",
- chart_type: "Sum",
- document_type: "Energy Point Log",
- name: __("Energy Points"),
- width: "half",
- based_on: "creation",
- };
-
- this.line_chart = new frappe.Chart(".performance-line-chart", {
- type: "line",
- height: 200,
- data: {
- labels: [],
- datasets: [{}],
- },
- colors: ["purple"],
- axisOptions: {
- xIsSeries: 1,
- },
- });
- this.update_line_chart_data();
- this.create_line_chart_filters();
- }
-
- update_line_chart_data() {
- this.line_chart_config.filters_json = JSON.stringify(this.line_chart_filters);
-
- frappe
- .xcall("frappe.desk.doctype.dashboard_chart.dashboard_chart.get", {
- chart: this.line_chart_config,
- no_cache: 1,
- })
- .then((chart) => {
- this.line_chart.update(chart);
- });
- }
-
- render_percentage_chart(field, title) {
- frappe
- .xcall(
- "frappe.desk.page.user_profile.user_profile.get_energy_points_percentage_chart_data",
- {
- user: this.user_id,
- field: field,
- }
- )
- .then((chart) => {
- if (chart.labels.length) {
- this.percentage_chart = new frappe.Chart(".performance-percentage-chart", {
- type: "percentage",
- data: {
- labels: chart.labels,
- datasets: chart.datasets,
- },
- truncateLegends: 1,
- barOptions: {
- height: 11,
- depth: 1,
- },
- height: 200,
- maxSlices: 8,
- colors: [
- "purple",
- "blue",
- "cyan",
- "teal",
- "pink",
- "red",
- "orange",
- "yellow",
- ],
- });
- } else {
- this.wrapper.find(".percentage-chart-container").hide();
- }
- });
- }
-
- create_line_chart_filters() {
- let filters = [
- {
- label: "All",
- options: ["All", "Auto", "Criticism", "Appreciation", "Revert"],
- action: (selected_item) => {
- if (selected_item === "All") {
- this.line_chart_filters = [
- ["Energy Point Log", "user", "=", this.user_id, false],
- ["Energy Point Log", "type", "!=", "Review", false],
- ];
- } else {
- this.line_chart_filters[1] = [
- "Energy Point Log",
- "type",
- "=",
- selected_item,
- false,
- ];
- }
- this.update_line_chart_data();
- },
- },
- {
- label: "Last Month",
- options: ["Last Week", "Last Month", "Last Quarter", "Last Year"],
- action: (selected_item) => {
- this.line_chart_config.timespan = selected_item;
- this.update_line_chart_data();
- },
- },
- {
- label: "Daily",
- options: ["Daily", "Weekly", "Monthly"],
- action: (selected_item) => {
- this.line_chart_config.time_interval = selected_item;
- this.update_line_chart_data();
- },
- },
- ];
- frappe.dashboard_utils.render_chart_filters(
- filters,
- "chart-filter",
- ".line-chart-options",
- 1
- );
- }
-
- create_percentage_chart_filters() {
- let filters = [
- {
- label: "Type",
- options: ["Type", "Reference Doctype", "Rule"],
- fieldnames: ["type", "reference_doctype", "rule"],
- action: (selected_item, fieldname) => {
- let title = selected_item + " Distribution";
- this.render_percentage_chart(fieldname, title);
- },
- },
- ];
- frappe.dashboard_utils.render_chart_filters(
- filters,
- "chart-filter",
- ".percentage-chart-options"
- );
- }
-
- create_heatmap_chart_filters() {
- let filters = [
- {
- label: frappe.dashboard_utils.get_year(frappe.datetime.now_date()),
- options: frappe.dashboard_utils.get_years_since_creation(
- frappe.boot.user.creation
- ),
- action: (selected_item) => {
- this.update_heatmap_data(frappe.datetime.obj_to_str(selected_item));
- },
- },
- ];
- frappe.dashboard_utils.render_chart_filters(filters, "chart-filter", ".heatmap-options");
- }
-
- edit_profile() {
- let edit_profile_dialog = new frappe.ui.Dialog({
- title: __("Edit Profile"),
- fields: [
- {
- fieldtype: "Attach Image",
- fieldname: "user_image",
- label: "Profile Image",
- },
- {
- fieldtype: "Data",
- fieldname: "interest",
- label: "Interests",
- },
- {
- fieldtype: "Column Break",
- },
- {
- fieldtype: "Data",
- fieldname: "location",
- label: "Location",
- },
- {
- fieldtype: "Section Break",
- fieldname: "Interest",
- },
- {
- fieldtype: "Small Text",
- fieldname: "bio",
- label: "Bio",
- },
- ],
- primary_action: (values) => {
- edit_profile_dialog.disable_primary_action();
- frappe
- .xcall("frappe.desk.page.user_profile.user_profile.update_profile_info", {
- profile_info: values,
- })
- .then((user) => {
- user.image = user.user_image;
- this.user = Object.assign(values, user);
- edit_profile_dialog.hide();
- this.render_user_details();
- })
- .finally(() => {
- edit_profile_dialog.enable_primary_action();
- });
- },
- primary_action_label: __("Save"),
- });
-
- edit_profile_dialog.set_values({
- user_image: this.user.image,
- location: this.user.location,
- interest: this.user.interest,
- bio: this.user.bio,
- });
- edit_profile_dialog.show();
- }
-
- render_user_details() {
- this.sidebar.empty().append(
- frappe.render_template("user_profile_sidebar", {
- user_image: this.user.image,
- user_abbr: this.user.abbr,
- user_location: this.user.location,
- user_interest: this.user.interest,
- user_bio: this.user.bio,
- })
- );
-
- this.setup_user_profile_links();
- }
-
- setup_user_profile_links() {
- if (this.user_id !== frappe.session.user) {
- this.wrapper.find(".profile-links").hide();
- } else {
- this.wrapper.find(".edit-profile-link").on("click", () => {
- this.edit_profile();
- });
-
- this.wrapper.find(".user-settings-link").on("click", () => {
- this.go_to_user_settings();
- });
- }
- }
-
- get_user_rank() {
- return frappe
- .xcall("frappe.desk.page.user_profile.user_profile.get_user_rank", {
- user: this.user_id,
- })
- .then((r) => {
- if (r.monthly_rank.length) this.month_rank = r.monthly_rank[0];
- if (r.all_time_rank.length) this.rank = r.all_time_rank[0];
- });
- }
-
- get_user_points() {
- return frappe
- .xcall(
- "frappe.social.doctype.energy_point_log.energy_point_log.get_user_energy_and_review_points",
- {
- user: this.user_id,
- }
- )
- .then((r) => {
- if (r[this.user_id]) {
- this.energy_points = r[this.user_id].energy_points;
- this.review_points = r[this.user_id].review_points;
- }
- });
- }
-
- render_points_and_rank() {
- let $profile_details = this.wrapper.find(".user-stats");
- let $profile_details_wrapper = this.wrapper.find(".user-stats-detail");
-
- const _get_stat_dom = (value, label, icon) => {
- return `
- ${frappe.utils.icon(icon, "lg", "no-stroke")}
-
-
`;
- };
-
- this.get_user_rank().then(() => {
- this.get_user_points().then(() => {
- let html = $(`
- ${_get_stat_dom(this.energy_points, __("Energy Points"), "color-energy-points")}
- ${_get_stat_dom(this.review_points, __("Review Points"), "color-review-points")}
- ${_get_stat_dom(this.rank, __("Rank"), "color-rank")}
- ${_get_stat_dom(this.month_rank, __("Monthly Rank"), "color-monthly-rank")}
- `);
-
- $profile_details.append(html);
- $profile_details_wrapper.removeClass("hide");
- });
- });
- }
-
- go_to_user_settings() {
- frappe.set_route("Form", "User", this.user_id);
- }
-
- setup_user_activity_timeline() {
- this.user_activity_timeline = new UserProfileTimeline({
- parent: this.wrapper.find(".recent-activity-list"),
- footer: this.wrapper.find(".recent-activity-footer"),
- user: this.user_id,
- });
-
- this.user_activity_timeline.refresh();
- }
-}
-
-class UserProfileTimeline extends BaseTimeline {
- make() {
- super.make();
- this.activity_start = 0;
- this.activity_limit = 20;
- this.setup_show_more_activity();
- }
- prepare_timeline_contents() {
- return this.get_user_activity_data().then((activities) => {
- if (!activities.length) {
- this.show_more_button.hide();
- this.timeline_wrapper.html(`
${__("No activities to show")}
`);
- return;
- }
- this.show_more_button.toggle(activities.length === this.activity_limit);
- this.timeline_items = activities.map((activity) =>
- this.get_activity_timeline_item(activity)
- );
- });
- }
-
- get_user_activity_data() {
- return frappe.xcall("frappe.desk.page.user_profile.user_profile.get_energy_points_list", {
- start: this.activity_start,
- limit: this.activity_limit,
- user: this.user,
- });
- }
-
- get_activity_timeline_item(data) {
- let icon =
- data.type == "Appreciation" ? "clap" : data.type == "Criticism" ? "criticize" : null;
- return {
- icon: icon,
- creation: data.creation,
- is_card: true,
- content: frappe.energy_points.format_history_log(data),
- };
- }
-
- setup_show_more_activity() {
- this.show_more_button = $(
- `
${__("Show More Activity")}`
- );
- this.show_more_button.hide();
- this.footer.append(this.show_more_button);
- this.show_more_button.on("click", () => this.show_more_activity());
- }
-
- show_more_activity() {
- this.activity_start += this.activity_limit;
- this.get_user_activity_data().then((activities) => {
- if (!activities.length || activities.length < this.activity_limit) {
- this.show_more_button.hide();
- }
- let timeline_items = activities.map((activity) =>
- this.get_activity_timeline_item(activity)
- );
- timeline_items.map((item) => this.add_timeline_item(item, true));
- });
- }
-}
-
-frappe.provide("frappe.ui");
-frappe.ui.UserProfile = UserProfile;
diff --git a/frappe/desk/page/user_profile/user_profile_sidebar.html b/frappe/desk/page/user_profile/user_profile_sidebar.html
deleted file mode 100644
index 9f8889fd03..0000000000
--- a/frappe/desk/page/user_profile/user_profile_sidebar.html
+++ /dev/null
@@ -1,60 +0,0 @@
-
diff --git a/frappe/hooks.py b/frappe/hooks.py
index 9bd3021ad9..3724599883 100644
--- a/frappe/hooks.py
+++ b/frappe/hooks.py
@@ -81,8 +81,6 @@ email_append_to = ["Event", "ToDo", "Communication"]
calendars = ["Event"]
-leaderboards = "frappe.desk.leaderboard.get_leaderboards"
-
# login
on_session_creation = [
@@ -177,7 +175,6 @@ doc_events = {
"frappe.core.doctype.file.utils.attach_files_to_document",
],
"on_change": [
- "frappe.social.doctype.energy_point_rule.energy_point_rule.process_energy_points",
"frappe.automation.doctype.milestone_tracker.milestone_tracker.evaluate_milestone",
],
"after_delete": ["frappe.core.doctype.permission_log.permission_log.make_perm_log"],
@@ -248,7 +245,6 @@ scheduler_events = {
"frappe.email.doctype.notification.notification.trigger_daily_alerts",
"frappe.website.doctype.personal_data_deletion_request.personal_data_deletion_request.remove_unverified_record",
"frappe.desk.form.document_follow.send_daily_updates",
- "frappe.social.doctype.energy_point_settings.energy_point_settings.allocate_review_points",
"frappe.integrations.doctype.google_contacts.google_contacts.sync",
"frappe.automation.doctype.auto_repeat.auto_repeat.make_auto_repeat_entry",
],
@@ -263,13 +259,11 @@ scheduler_events = {
"frappe.integrations.doctype.s3_backup_settings.s3_backup_settings.take_backups_weekly",
"frappe.desk.form.document_follow.send_weekly_updates",
"frappe.utils.change_log.check_for_update",
- "frappe.social.doctype.energy_point_log.energy_point_log.send_weekly_summary",
"frappe.integrations.doctype.google_drive.google_drive.weekly_backup",
"frappe.desk.doctype.changelog_feed.changelog_feed.fetch_changelog_feed",
],
"monthly": [
"frappe.email.doctype.auto_email_report.auto_email_report.send_monthly",
- "frappe.social.doctype.energy_point_log.energy_point_log.send_monthly_summary",
],
"monthly_long": [
"frappe.integrations.doctype.s3_backup_settings.s3_backup_settings.take_backups_monthly"
diff --git a/frappe/model/rename_doc.py b/frappe/model/rename_doc.py
index d813da43bc..5b1f9c3fe0 100644
--- a/frappe/model/rename_doc.py
+++ b/frappe/model/rename_doc.py
@@ -199,8 +199,6 @@ def rename_doc(
rename_versions(doctype, old, new)
- rename_eps_records(doctype, old, new)
-
# call after_rename
new_doc = frappe.get_doc(doctype, new)
@@ -329,14 +327,6 @@ def rename_versions(doctype: str, old: str, new: str) -> None:
).run()
-def rename_eps_records(doctype: str, old: str, new: str) -> None:
- EPL = frappe.qb.DocType("Energy Point Log")
-
- frappe.qb.update(EPL).set(EPL.reference_name, new).where(
- (EPL.reference_doctype == doctype) & (EPL.reference_name == old)
- ).run()
-
-
def rename_parent_and_child(doctype: str, old: str, new: str, meta: "Meta") -> None:
frappe.qb.update(doctype).set("name", new).where(Field("name") == old).run()
diff --git a/frappe/model/sync.py b/frappe/model/sync.py
index 7bd7234005..445f06dc41 100644
--- a/frappe/model/sync.py
+++ b/frappe/model/sync.py
@@ -163,7 +163,7 @@ def remove_orphan_doctypes():
continue
try:
get_controller(doctype=doctype)
- except ImportError:
+ except (ImportError, frappe.DoesNotExistError):
orphan_doctypes.append(doctype)
except Exception:
continue
diff --git a/frappe/model/utils/link_count.py b/frappe/model/utils/link_count.py
index 532a7807bd..e2bc3f85f6 100644
--- a/frappe/model/utils/link_count.py
+++ b/frappe/model/utils/link_count.py
@@ -20,7 +20,6 @@ ignore_doctypes = {
"Access Log",
"View Log",
"Activity Log",
- "Energy Point Log",
"Notification Log",
"Email Queue",
"DocShare",
diff --git a/frappe/modules.txt b/frappe/modules.txt
index 863c448594..ef680e1eef 100644
--- a/frappe/modules.txt
+++ b/frappe/modules.txt
@@ -8,5 +8,4 @@ Desk
Integrations
Printing
Contacts
-Social
Automation
\ No newline at end of file
diff --git a/frappe/patches.txt b/frappe/patches.txt
index b56a5173f0..cfbbb88ded 100644
--- a/frappe/patches.txt
+++ b/frappe/patches.txt
@@ -245,4 +245,4 @@ frappe.desk.doctype.workspace.patches.update_app
frappe.patches.v16_0.move_role_desk_settings_to_user
frappe.printing.doctype.print_format.patches.sets_wkhtmltopdf_as_default_for_pdf_generator_field
frappe.patches.v14_0.fix_user_settings_collation
-execute:frappe.core.doctype.system_settings.system_settings.sync_system_settings
+execute:frappe.core.doctype.system_settings.system_settings.sync_system_settings
diff --git a/frappe/public/js/desk.bundle.js b/frappe/public/js/desk.bundle.js
index 1287dbabb1..cd7653fba3 100644
--- a/frappe/public/js/desk.bundle.js
+++ b/frappe/public/js/desk.bundle.js
@@ -101,7 +101,6 @@ import "./frappe/ui/workspace_sidebar_loading_skeleton.html";
import "./frappe/desk.js";
import "./frappe/query_string.js";
-import "./frappe/utils/energy_point_utils.js";
import "./frappe/utils/dashboard_utils.js";
import "./frappe/ui/chart.js";
import "./frappe/ui/datatable.js";
diff --git a/frappe/public/js/frappe/desk.js b/frappe/public/js/frappe/desk.js
index b16e409397..a5e2dc07a5 100644
--- a/frappe/public/js/frappe/desk.js
+++ b/frappe/public/js/frappe/desk.js
@@ -41,7 +41,6 @@ frappe.Application = class Application {
this.set_favicon();
this.set_fullwidth_if_enabled();
this.add_browser_class();
- this.setup_energy_point_listeners();
this.setup_copy_doc_listener();
this.setup_broadcast_listeners();
@@ -499,12 +498,6 @@ frappe.Application = class Application {
}
}
- setup_energy_point_listeners() {
- frappe.realtime.on("energy_point_alert", (message) => {
- frappe.show_alert(message);
- });
- }
-
setup_copy_doc_listener() {
$("body").on("paste", (e) => {
try {
diff --git a/frappe/public/js/frappe/form/footer/base_timeline.js b/frappe/public/js/frappe/form/footer/base_timeline.js
index beacdda462..b28c2c7706 100644
--- a/frappe/public/js/frappe/form/footer/base_timeline.js
+++ b/frappe/public/js/frappe/form/footer/base_timeline.js
@@ -148,4 +148,5 @@ class BaseTimeline {
}
}
+frappe.ui.BaseTimeline = BaseTimeline;
export default BaseTimeline;
diff --git a/frappe/public/js/frappe/form/footer/form_timeline.js b/frappe/public/js/frappe/form/footer/form_timeline.js
index c79c17619f..bd88b6eabc 100644
--- a/frappe/public/js/frappe/form/footer/form_timeline.js
+++ b/frappe/public/js/frappe/form/footer/form_timeline.js
@@ -161,7 +161,6 @@ class FormTimeline extends BaseTimeline {
this.timeline_items.push(...this.get_comment_timeline_contents());
if (!this.only_communication) {
this.timeline_items.push(...this.get_view_timeline_contents());
- this.timeline_items.push(...this.get_energy_point_timeline_contents());
this.timeline_items.push(...this.get_version_timeline_contents());
this.timeline_items.push(...this.get_share_timeline_contents());
this.timeline_items.push(...this.get_workflow_timeline_contents());
@@ -494,36 +493,30 @@ class FormTimeline extends BaseTimeline {
get_custom_timeline_contents() {
let custom_timeline_contents = [];
(this.doc_info.additional_timeline_content || []).forEach((custom_item) => {
- custom_timeline_contents.push({
- icon: custom_item.icon,
- icon_size: "sm",
- is_card: custom_item.is_card,
- creation: custom_item.creation,
- content:
- custom_item.content ||
- frappe.render_template(custom_item.template, custom_item.template_data),
- });
+ if (custom_item.timeline_badge) {
+ custom_timeline_contents.push({
+ timeline_badge: custom_item.timeline_badge,
+ creation: custom_item.creation,
+ content: frappe.utils.eval(custom_item.method, {
+ custom_item: custom_item,
+ }),
+ });
+ } else {
+ custom_timeline_contents.push({
+ icon: custom_item.icon,
+ timeline_badge: custom_item.timeline_badge,
+ icon_size: "sm",
+ is_card: custom_item.is_card,
+ creation: custom_item.creation,
+ content:
+ custom_item.content ||
+ frappe.render_template(custom_item.template, custom_item.template_data),
+ });
+ }
});
return custom_timeline_contents;
}
- get_energy_point_timeline_contents() {
- let energy_point_timeline_contents = [];
- (this.doc_info.energy_point_logs || []).forEach((log) => {
- let timeline_badge = `
-
- ${log.points}
-
`;
-
- energy_point_timeline_contents.push({
- timeline_badge: timeline_badge,
- creation: log.creation,
- content: frappe.energy_points.format_form_log(log),
- });
- });
- return energy_point_timeline_contents;
- }
-
setup_reply(communication_box, communication_doc) {
let actions = communication_box.find(".custom-actions");
let reply = $(`
${frappe.utils.icon("reply", "md")}`).click(
diff --git a/frappe/public/js/frappe/form/sidebar/form_sidebar.js b/frappe/public/js/frappe/form/sidebar/form_sidebar.js
index 0193b659a2..7902917026 100644
--- a/frappe/public/js/frappe/form/sidebar/form_sidebar.js
+++ b/frappe/public/js/frappe/form/sidebar/form_sidebar.js
@@ -1,7 +1,6 @@
import "./assign_to";
import "./attachments";
import "./share";
-import "./review";
import "./document_follow";
import "./user_image";
import "./form_sidebar_users";
@@ -28,7 +27,6 @@ frappe.ui.form.Sidebar = class {
this.image_wrapper = this.image_section.find(".sidebar-image-wrapper");
this.make_assignments();
this.make_attachments();
- this.make_review();
this.make_shared();
this.make_tags();
@@ -214,18 +212,6 @@ frappe.ui.form.Sidebar = class {
refresh_image() {}
- make_review() {
- const review_wrapper = this.sidebar.find(".form-reviews");
- if (frappe.boot.energy_points_enabled && !this.frm.is_new()) {
- this.frm.reviews = new frappe.ui.form.Review({
- parent: review_wrapper,
- frm: this.frm,
- });
- } else {
- review_wrapper.remove();
- }
- }
-
reload_docinfo(callback) {
frappe.call({
method: "frappe.desk.form.load.get_docinfo",
diff --git a/frappe/public/js/frappe/form/sidebar/review.js b/frappe/public/js/frappe/form/sidebar/review.js
deleted file mode 100644
index 10b11bf4d3..0000000000
--- a/frappe/public/js/frappe/form/sidebar/review.js
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors
-// MIT License. See license.txt
-
-frappe.ui.form.Review = class Review {
- constructor({ parent, frm }) {
- this.parent = parent;
- this.frm = frm;
- this.points = frappe.boot.points;
- this.reviews = this.parent.find(".reviews");
- this.setup_add_review_button();
- this.update_reviewers();
- }
- update_points() {
- return frappe
- .xcall("frappe.social.doctype.energy_point_log.energy_point_log.get_energy_points", {
- user: frappe.session.user,
- })
- .then((data) => {
- frappe.boot.points = data;
- this.points = data;
- });
- }
- setup_add_review_button() {
- const review_button = this.reviews.find(".add-review-btn");
-
- if (!this.points.review_points) {
- review_button.click(false);
- review_button.popover({
- trigger: "hover",
- content: () => {
- return `
- ${__("You do not have enough review points")}
-
`;
- },
- html: true,
- });
- } else {
- review_button.click(() => this.show_review_dialog());
- }
- }
-
- show_review_dialog() {
- const user_options = this.frm.get_involved_users();
- const review_dialog = new frappe.ui.Dialog({
- title: __("Add Review"),
- fields: [
- {
- fieldname: "to_user",
- fieldtype: "Autocomplete",
- label: __("To User"),
- reqd: 1,
- options: user_options,
- ignore_validation: 1,
- description: __("Only users involved in the document are listed"),
- },
- {
- fieldname: "review_type",
- fieldtype: "Select",
- label: __("Action"),
- options: [
- {
- label: __("Appreciate"),
- value: "Appreciation",
- },
- {
- label: __("Criticize"),
- value: "Criticism",
- },
- ],
- default: "Appreciation",
- },
- {
- fieldname: "points",
- fieldtype: "Int",
- label: __("Points"),
- reqd: 1,
- description: __("Currently you have {0} review points", [
- this.points.review_points,
- ]),
- },
- {
- fieldtype: "Small Text",
- fieldname: "reason",
- reqd: 1,
- label: __("Reason"),
- },
- ],
- primary_action: (values) => {
- review_dialog.disable_primary_action();
- if (values.points > this.points.review_points) {
- return frappe.msgprint(__("You do not have enough points"));
- }
- frappe
- .xcall("frappe.social.doctype.energy_point_log.energy_point_log.review", {
- doc: {
- doctype: this.frm.doc.doctype,
- name: this.frm.doc.name,
- },
- to_user: values.to_user,
- points: values.points,
- review_type: values.review_type,
- reason: values.reason,
- })
- .then((review) => {
- review_dialog.hide();
- review_dialog.clear();
- this.frm.get_docinfo().energy_point_logs.unshift(review);
- this.frm.timeline.refresh();
- this.update_reviewers();
- this.update_points();
- })
- .finally(() => {
- review_dialog.enable_primary_action();
- });
- },
- primary_action_label: __("Submit"),
- });
- review_dialog.show();
- }
- update_reviewers() {
- const review_logs = this.frm
- .get_docinfo()
- .energy_point_logs.filter((log) => ["Appreciation", "Criticism"].includes(log.type));
-
- this.reviews.find(".review").remove();
- review_logs.forEach((log) => {
- let review_pill = $(`
-
- ${frappe.avatar(log.owner)}
-
- ${log.points > 0 ? "+" : ""}${log.points}
-
-
- `);
- this.reviews.append(review_pill);
- this.setup_detail_popover(review_pill, log);
- });
- }
- setup_detail_popover(el, data) {
- let subject = "";
- let fullname = frappe.user.full_name(data.user);
- let timestamp = `
${frappe.datetime.comment_when(
- data.creation
- )}`;
- let message_parts = [Math.abs(data.points), fullname, timestamp];
- if (data.type === "Appreciation") {
- if (data.points == 1) {
- subject = __("{0} appreciation point for {1}", message_parts);
- } else {
- subject = __("{0} appreciation points for {1}", message_parts);
- }
- } else {
- if (data.points == -1) {
- subject = __("{0} criticism point for {1}", message_parts);
- } else {
- subject = __("{0} criticism points for {1}", message_parts);
- }
- }
-
- el.popover({
- animation: true,
- trigger: "hover",
- delay: 500,
- placement: "top",
- template: `
-
'
- `,
- content: () => {
- return `
-
-
-
-
- ${frappe.utils.icon("review")}
- ${subject}
-
-
-
- ${frappe.user.full_name(data.owner)} - ${timestamp}
-
-
-
- `;
- },
- html: true,
- container: "body",
- });
-
- return el;
- }
-};
diff --git a/frappe/public/js/frappe/form/templates/form_sidebar.html b/frappe/public/js/frappe/form/templates/form_sidebar.html
index 6f8ded92d9..c21a91a2fa 100644
--- a/frappe/public/js/frappe/form/templates/form_sidebar.html
+++ b/frappe/public/js/frappe/form/templates/form_sidebar.html
@@ -74,18 +74,6 @@
-