Merge branch 'develop' of https://github.com/frappe/frappe into feat-value-change-detection
This commit is contained in:
parent
c61de730d9
commit
97a65ceca4
6 changed files with 50 additions and 18 deletions
|
|
@ -457,9 +457,15 @@ class BaseDocument(object):
|
|||
|
||||
meta = frappe.get_meta(doctype)
|
||||
if meta.has_field('disabled'):
|
||||
disabled = frappe.get_value(doctype, self.get(df.fieldname), 'disabled')
|
||||
if disabled:
|
||||
frappe.throw(_("{0} is disabled").format(frappe.bold(self.get(df.fieldname))))
|
||||
if not (
|
||||
frappe.flags.in_import
|
||||
or frappe.flags.in_migrate
|
||||
or frappe.flags.in_install
|
||||
or frappe.flags.in_patch
|
||||
):
|
||||
disabled = frappe.get_value(doctype, self.get(df.fieldname), 'disabled')
|
||||
if disabled:
|
||||
frappe.throw(_("{0} is disabled").format(frappe.bold(self.get(df.fieldname))))
|
||||
else:
|
||||
doctype = self.get(df.options)
|
||||
if not doctype:
|
||||
|
|
|
|||
|
|
@ -1232,6 +1232,18 @@ class Document(BaseDocument):
|
|||
frappe.bold(self.meta.get_label(from_date_field)),
|
||||
), frappe.exceptions.InvalidDates)
|
||||
|
||||
def get_assigned_users(self):
|
||||
assignments = frappe.get_all('ToDo',
|
||||
fields=['owner'],
|
||||
filters={
|
||||
'reference_type': self.doctype,
|
||||
'reference_name': self.name,
|
||||
'status': ('!=', 'Cancelled'),
|
||||
})
|
||||
|
||||
users = set([assignment.owner for assignment in assignments])
|
||||
return users
|
||||
|
||||
def execute_action(doctype, name, action, **kwargs):
|
||||
'''Execute an action on a document (called by background worker)'''
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ def sync_customizations_for_doctype(data, folder):
|
|||
custom_doctype, doctype_fieldname), doc_type)
|
||||
|
||||
for d in data[key]:
|
||||
_insert(data)
|
||||
_insert(d)
|
||||
|
||||
else:
|
||||
for d in data[key]:
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import frappe
|
|||
import unittest
|
||||
from .energy_point_log import get_energy_points as _get_energy_points, create_review_points_log, review
|
||||
from frappe.utils.testutils import add_custom_field, clear_custom_fields
|
||||
from frappe.desk.form.assign_to import add as assign_to
|
||||
|
||||
class TestEnergyPointLog(unittest.TestCase):
|
||||
def tearDown(self):
|
||||
|
|
@ -241,6 +242,7 @@ def create_energy_point_rule_for_todo(multiplier_field=None, for_doc_event='Cust
|
|||
'condition': 'doc.status == "Closed"',
|
||||
'for_doc_event': for_doc_event,
|
||||
'user_field': 'owner',
|
||||
'for_assigned_users': for_assigned_users,
|
||||
'multiplier_field': multiplier_field,
|
||||
'max_points': max_points,
|
||||
'field_to_check': field_to_check
|
||||
|
|
@ -254,4 +256,12 @@ def create_a_todo():
|
|||
|
||||
|
||||
def get_points(user, point_type='energy_points'):
|
||||
return _get_energy_points(user).get(point_type) or 0
|
||||
return _get_energy_points(user).get(point_type) or 0
|
||||
|
||||
def assign_users_to_todo(todo_name, users):
|
||||
for user in users:
|
||||
assign_to({
|
||||
'assign_to': user,
|
||||
'doctype': 'ToDo',
|
||||
'name': todo_name
|
||||
})
|
||||
|
|
@ -13,6 +13,7 @@
|
|||
"field_to_check",
|
||||
"condition",
|
||||
"points",
|
||||
"for_assigned_users",
|
||||
"user_field",
|
||||
"multiplier_field",
|
||||
"max_points"
|
||||
|
|
@ -57,11 +58,11 @@
|
|||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:!doc.for_assigned_users || doc.for_doc_event==='New'",
|
||||
"description": "The user from this field will be rewarded points",
|
||||
"fieldname": "user_field",
|
||||
"fieldtype": "Select",
|
||||
"label": "User Field",
|
||||
"reqd": 1
|
||||
"label": "User Field"
|
||||
},
|
||||
{
|
||||
"fieldname": "multiplier_field",
|
||||
|
|
@ -70,7 +71,7 @@
|
|||
},
|
||||
{
|
||||
"depends_on": "eval:doc.multiplier_field",
|
||||
"description": "Maximum points allowed after multiplying points with the multiplier value\n(Note: For no limit set value as 0)",
|
||||
"description": "Maximum points allowed after multiplying points with the multiplier value\n(Note: For no limit leave this field empty or set 0)",
|
||||
"fieldname": "max_points",
|
||||
"fieldtype": "Int",
|
||||
"label": "Maximum Points"
|
||||
|
|
@ -101,7 +102,7 @@
|
|||
"label": "Field To Check"
|
||||
}
|
||||
],
|
||||
"modified": "2019-09-24 14:45:06.060757",
|
||||
"modified": "2019-09-20 11:26:26.101557",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Social",
|
||||
"name": "Energy Point Rule",
|
||||
|
|
|
|||
|
|
@ -31,21 +31,24 @@ class EnergyPointRule(Document):
|
|||
|
||||
reference_doctype = doc.doctype
|
||||
reference_name = doc.name
|
||||
user = doc.get(self.user_field)
|
||||
users = []
|
||||
if self.for_assigned_users:
|
||||
users = doc.get_assigned_users()
|
||||
else:
|
||||
users = [doc.get(self.user_field)]
|
||||
rule = self.name
|
||||
|
||||
# incase of zero as result after roundoff
|
||||
if not points: return
|
||||
|
||||
# if user_field has no value
|
||||
if not user or user == 'Administrator': return
|
||||
|
||||
try:
|
||||
create_energy_points_log(reference_doctype, reference_name, {
|
||||
'points': points,
|
||||
'user': user,
|
||||
'rule': rule
|
||||
})
|
||||
for user in users:
|
||||
if not user or user == 'Administrator': continue
|
||||
create_energy_points_log(reference_doctype, reference_name, {
|
||||
'points': points,
|
||||
'user': user,
|
||||
'rule': rule
|
||||
})
|
||||
except Exception as e:
|
||||
frappe.log_error(frappe.get_traceback(), 'apply_energy_point')
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue