From b62a92694abd4b4f51b0dae62bf0f837c2d71bd5 Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Tue, 7 May 2019 11:37:35 +0530 Subject: [PATCH 1/2] fix: Skip log creation if user from the rule comes out to be Admin --- .../energy_point_log/test_energy_point_log.py | 13 +++++++++++++ .../doctype/energy_point_rule/energy_point_rule.py | 5 ++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/frappe/social/doctype/energy_point_log/test_energy_point_log.py b/frappe/social/doctype/energy_point_log/test_energy_point_log.py index c8b3dc913e..c744930541 100644 --- a/frappe/social/doctype/energy_point_log/test_energy_point_log.py +++ b/frappe/social/doctype/energy_point_log/test_energy_point_log.py @@ -105,6 +105,19 @@ class TestEnergyPointLog(unittest.TestCase): self.assertEquals(energy_points_after_review, energy_points_before_review - criticism_points) self.assertEquals(review_points_after_review, review_points_before_review - criticism_points) + def test_user_energy_point_as_admin(self): + frappe.set_user('Administrator') + create_energy_point_rule_for_todo() + created_todo = create_a_todo() + + created_todo.status = 'Closed' + created_todo.save() + + points_after_closing_todo = get_points('Administrator') + + # no points for admin + self.assertEquals(points_after_closing_todo, 0) + def create_energy_point_rule_for_todo(multiplier_field=None): name = 'ToDo Closed' point_rule = frappe.db.get_all( 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 ccf0ff0b13..43850a7a37 100644 --- a/frappe/social/doctype/energy_point_rule/energy_point_rule.py +++ b/frappe/social/doctype/energy_point_rule/energy_point_rule.py @@ -33,7 +33,7 @@ class EnergyPointRule(Document): if not points: return # if user_field has no value - if not user: return + if not user or user == 'Administrator': return try: create_energy_points_log(reference_doctype, reference_name, { @@ -48,8 +48,7 @@ class EnergyPointRule(Document): def process_energy_points(doc, state): if (frappe.flags.in_patch or frappe.flags.in_install - or not is_energy_point_enabled() - or frappe.session.user == 'Administrator'): + or not is_energy_point_enabled()): return for d in frappe.cache_manager.get_doctype_map('Energy Point Rule', doc.doctype, From 6daaa02fcc603080fc821d54bd6cdc56bf552ef5 Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Wed, 8 May 2019 00:50:17 +0530 Subject: [PATCH 2/2] fix: use .get to avoid attribute error --- frappe/social/doctype/energy_point_rule/energy_point_rule.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 43850a7a37..16180fbc2f 100644 --- a/frappe/social/doctype/energy_point_rule/energy_point_rule.py +++ b/frappe/social/doctype/energy_point_rule/energy_point_rule.py @@ -53,7 +53,7 @@ def process_energy_points(doc, state): for d in frappe.cache_manager.get_doctype_map('Energy Point Rule', doc.doctype, dict(reference_doctype = doc.doctype, enabled=1)): - frappe.get_doc('Energy Point Rule', d.name).apply(doc) + frappe.get_doc('Energy Point Rule', d.get('name')).apply(doc) def get_energy_point_doctypes(): return [