fix: Do not create energy points for disabled users

This commit is contained in:
Suraj Shetty 2021-07-14 18:16:50 +05:30
parent f4d67d617b
commit bd854bb368
2 changed files with 20 additions and 1 deletions

View file

@ -53,6 +53,7 @@ class User(Document):
def after_insert(self):
create_notification_settings(self.name)
frappe.cache().delete_key('users_for_mentions')
frappe.cache().delete_key('enabled_users')
def validate(self):
self.check_demo()
@ -129,6 +130,9 @@ class User(Document):
if self.has_value_changed('allow_in_mentions') or self.has_value_changed('user_type'):
frappe.cache().delete_key('users_for_mentions')
if self.has_value_changed('enabled'):
frappe.cache().delete_key('enabled_users')
def has_website_permission(self, ptype, user, verbose=False):
"""Returns true if current user is the session user"""
return self.name == frappe.session.user
@ -392,6 +396,8 @@ class User(Document):
if self.get('allow_in_mentions'):
frappe.cache().delete_key('users_for_mentions')
frappe.cache().delete_key('enabled_users')
def before_rename(self, old_name, new_name, merge=False):
self.check_demo()
@ -1230,3 +1236,10 @@ def generate_keys(user):
def switch_theme(theme):
if theme in ["Dark", "Light"]:
frappe.db.set_value("User", frappe.session.user, "desk_theme", theme)
def get_enabled_users():
def _get_enabled_users():
enabled_users = frappe.get_all("User", filters={"enabled": "1"}, pluck="name")
return enabled_users
return frappe.cache().get_value("enabled_users", _get_enabled_users)

View file

@ -5,6 +5,7 @@
import frappe
from frappe import _
import frappe.cache_manager
from frappe.core.doctype.user.user import get_enabled_users
from frappe.model import log_types
from frappe.model.document import Document
from frappe.social.doctype.energy_point_settings.energy_point_settings import is_energy_point_enabled
@ -44,7 +45,7 @@ class EnergyPointRule(Document):
try:
for user in users:
if not user or user == 'Administrator': continue
if not is_eligible_user(user): continue
create_energy_points_log(reference_doctype, reference_name, {
'points': points,
'user': user,
@ -119,3 +120,8 @@ def get_energy_point_doctypes():
d.reference_doctype for d in frappe.get_all('Energy Point Rule',
['reference_doctype'], {'enabled': 1})
]
def is_eligible_user(user):
'''Checks if user is eligible to get energy points'''
enabled_users = get_enabled_users()
return user and user in enabled_users and user != 'Administrator'