refactor: Move revert functionality to controller
This commit is contained in:
parent
e19b8dbff2
commit
d9dae005c3
3 changed files with 36 additions and 34 deletions
|
|
@ -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')
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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})")
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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():
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue