From d9dae005c36a38902ae8311749abf147ffa09ef2 Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Fri, 15 Nov 2019 10:50:52 +0530 Subject: [PATCH] refactor: Move revert functionality to controller --- .../energy_point_log/energy_point_log.js | 9 +-- .../energy_point_log/energy_point_log.py | 57 ++++++++++--------- .../energy_point_rule/energy_point_rule.py | 4 +- 3 files changed, 36 insertions(+), 34 deletions(-) diff --git a/frappe/social/doctype/energy_point_log/energy_point_log.js b/frappe/social/doctype/energy_point_log/energy_point_log.js index 3090f3659d..9822998a30 100644 --- a/frappe/social/doctype/energy_point_log/energy_point_log.js +++ b/frappe/social/doctype/energy_point_log/energy_point_log.js @@ -21,14 +21,15 @@ frappe.ui.form.on('Energy Point Log', { reqd: 1 }], primary_action: (values) => { - return frappe.xcall('frappe.social.doctype.energy_point_log.energy_point_log.revert', { - 'name': frm.doc.name, + return frm.call('revert', { 'reason': values.reason - }).then(revert_log => { + }).then(res => { + let revert_log = res.message; revert_dialog.hide(); revert_dialog.clear(); frappe.model.docinfo[frm.doc.reference_doctype][frm.doc.reference_name].energy_point_logs.unshift(revert_log); - }).catch(() => {}); + frm.refresh(); + }); }, primary_action_label: __('Submit') }); diff --git a/frappe/social/doctype/energy_point_log/energy_point_log.py b/frappe/social/doctype/energy_point_log/energy_point_log.py index cd3d641d53..cfba5884cf 100644 --- a/frappe/social/doctype/energy_point_log/energy_point_log.py +++ b/frappe/social/doctype/energy_point_log/energy_point_log.py @@ -44,6 +44,35 @@ class EnergyPointLog(Document): enqueue_create_notification(self.user, notification_doc) + def on_trash(self): + if self.type == 'Revert': + reference_log = frappe.get_doc('Energy Point Log', self.revert_of) + reference_log.reverted = 0 + reference_log.save() + + def revert(self, reason): + frappe.only_for('System Manager') + if self.type != 'Auto': + frappe.throw(_('This document cannot be reverted')) + + if self.reverted: return + + self.reverted = 1 + self.save(ignore_permissions=True) + + revert_log = frappe.get_doc({ + 'doctype': 'Energy Point Log', + 'points': -(self.points), + 'type': 'Revert', + 'user': self.user, + 'reason': reason, + 'reference_doctype': self.reference_doctype, + 'reference_name': self.reference_name, + 'revert_of': self.name + }).insert(ignore_permissions=True) + + return revert_log + def get_notification_message(doc): owner_name = get_fullname(doc.owner) points = doc.points @@ -258,32 +287,6 @@ def get_reviews(doctype, docname): 'type': ['in', ('Appreciation', 'Criticism')], }, fields=['points', 'owner', 'type', 'user', 'reason', 'creation']) -@frappe.whitelist() -def revert(name, reason): - frappe.only_for('System Manager') - doc_to_revert = frappe.get_doc('Energy Point Log', name) - - if doc_to_revert.type != 'Auto': - frappe.throw(_('This document cannot be reverted')) - - if doc_to_revert.reverted: return - - doc_to_revert.reverted = 1 - doc_to_revert.save(ignore_permissions=True) - - revert_log = frappe.get_doc({ - 'doctype': 'Energy Point Log', - 'points': -(doc_to_revert.points), - 'type': 'Revert', - 'user': doc_to_revert.user, - 'reason': reason, - 'reference_doctype': doc_to_revert.reference_doctype, - 'reference_name': doc_to_revert.reference_name, - 'revert_of': doc_to_revert.name - }).insert(ignore_permissions=True) - - return revert_log - def send_weekly_summary(): send_summary('Weekly') @@ -326,5 +329,3 @@ def get_footer_message(timespan): return _("Stats based on last month's performance (from {0} to {1})") else: return _("Stats based on last week's performance (from {0} to {1})") - - diff --git a/frappe/social/doctype/energy_point_rule/energy_point_rule.py b/frappe/social/doctype/energy_point_rule/energy_point_rule.py index 38995887f0..0d66691a1b 100644 --- a/frappe/social/doctype/energy_point_rule/energy_point_rule.py +++ b/frappe/social/doctype/energy_point_rule/energy_point_rule.py @@ -8,7 +8,7 @@ from frappe import _ import frappe.cache_manager from frappe.model.document import Document from frappe.social.doctype.energy_point_settings.energy_point_settings import is_energy_point_enabled -from frappe.social.doctype.energy_point_log.energy_point_log import create_energy_points_log, revert +from frappe.social.doctype.energy_point_log.energy_point_log import create_energy_points_log class EnergyPointRule(Document): def on_update(self): @@ -106,7 +106,7 @@ def revert_points_for_cancelled_doc(doc): 'type': 'Auto' }) for log in energy_point_logs: - revert(log.name, _('Reference document has been cancelled')) + frappe.get_doc('Energy Point Log', log.name).revert(_('Reference document has been cancelled')) def get_energy_point_doctypes():