perf: Use get_cached_value and get_cached_doc
This commit is contained in:
@@ -349,7 +349,9 @@ def get_employee_email(employee_doc):
|
||||
|
||||
def get_holiday_list_for_employee(employee, raise_exception=True):
|
||||
if employee:
|
||||
holiday_list, company = frappe.db.get_value("Employee", employee, ["holiday_list", "company"])
|
||||
holiday_list, company = frappe.get_cached_value(
|
||||
"Employee", employee, ["holiday_list", "company"]
|
||||
)
|
||||
else:
|
||||
holiday_list = ""
|
||||
company = frappe.db.get_value("Global Defaults", None, "default_company")
|
||||
|
||||
@@ -131,7 +131,7 @@ def mark_attendance_and_link_log(
|
||||
return None
|
||||
|
||||
elif attendance_status in ("Present", "Absent", "Half Day"):
|
||||
employee_doc = frappe.get_doc("Employee", employee)
|
||||
company = frappe.get_cached_value("Employee", employee, "company")
|
||||
duplicate = frappe.db.exists(
|
||||
"Attendance",
|
||||
{"employee": employee, "attendance_date": attendance_date, "docstatus": ("!=", "2")},
|
||||
@@ -144,7 +144,7 @@ def mark_attendance_and_link_log(
|
||||
"attendance_date": attendance_date,
|
||||
"status": attendance_status,
|
||||
"working_hours": working_hours,
|
||||
"company": employee_doc.company,
|
||||
"company": company,
|
||||
"shift": shift,
|
||||
"late_entry": late_entry,
|
||||
"early_exit": early_exit,
|
||||
|
||||
@@ -115,6 +115,8 @@ def is_holiday(holiday_list, date=None):
|
||||
if date is None:
|
||||
date = today()
|
||||
if holiday_list:
|
||||
return bool(frappe.db.exists("Holiday List", {"name": holiday_list, "holiday_date": date}))
|
||||
return bool(
|
||||
frappe.db.exists("Holiday", {"parent": holiday_list, "holiday_date": date}, cache=True)
|
||||
)
|
||||
else:
|
||||
return False
|
||||
|
||||
@@ -169,7 +169,7 @@ def get_employee_shift(
|
||||
"""
|
||||
if for_date is None:
|
||||
for_date = nowdate()
|
||||
default_shift = frappe.db.get_value("Employee", employee, "default_shift")
|
||||
default_shift = frappe.get_cached_value("Employee", employee, "default_shift")
|
||||
shift_type_name = None
|
||||
shift_assignment_details = frappe.db.get_value(
|
||||
"Shift Assignment",
|
||||
@@ -187,7 +187,7 @@ def get_employee_shift(
|
||||
if not shift_type_name and consider_default_shift:
|
||||
shift_type_name = default_shift
|
||||
if shift_type_name:
|
||||
holiday_list_name = frappe.db.get_value("Shift Type", shift_type_name, "holiday_list")
|
||||
holiday_list_name = frappe.get_cached_value("Shift Type", shift_type_name, "holiday_list")
|
||||
if not holiday_list_name:
|
||||
holiday_list_name = get_holiday_list_for_employee(employee, False)
|
||||
if holiday_list_name and is_holiday(holiday_list_name, for_date):
|
||||
@@ -294,7 +294,7 @@ def get_shift_details(shift_type_name, for_date=None):
|
||||
return None
|
||||
if not for_date:
|
||||
for_date = nowdate()
|
||||
shift_type = frappe.db.get_value(
|
||||
shift_type = frappe.get_cached_value(
|
||||
"Shift Type",
|
||||
shift_type_name,
|
||||
[
|
||||
|
||||
@@ -107,7 +107,7 @@ class ShiftType(Document):
|
||||
"""Marks Absents for the given employee on working days in this shift which have no attendance marked.
|
||||
The Absent is marked starting from 'process_attendance_after' or employee creation date.
|
||||
"""
|
||||
date_of_joining, relieving_date, employee_creation = frappe.db.get_value(
|
||||
date_of_joining, relieving_date, employee_creation = frappe.get_cached_value(
|
||||
"Employee", employee, ["date_of_joining", "relieving_date", "creation"]
|
||||
)
|
||||
if not date_of_joining:
|
||||
@@ -168,7 +168,7 @@ class ShiftType(Document):
|
||||
def process_auto_attendance_for_all_shifts():
|
||||
shift_list = frappe.get_all("Shift Type", filters={"enable_auto_attendance": "1"}, pluck="name")
|
||||
for shift in shift_list:
|
||||
doc = frappe.get_doc("Shift Type", shift)
|
||||
doc = frappe.get_cached_doc("Shift Type", shift)
|
||||
doc.process_auto_attendance()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user