[UPDT] EMPLOYEE: Optimize bulk_create operations in Employee module with batch_size=1000 for improved performance on large imports
This commit is contained in:
@@ -401,7 +401,7 @@ def bulk_create_user_import(success_lists):
|
||||
user_obj_list.append(user_obj)
|
||||
result = []
|
||||
if user_obj_list:
|
||||
result = User.objects.bulk_create(user_obj_list)
|
||||
result = User.objects.bulk_create(user_obj_list, batch_size=1000)
|
||||
return result
|
||||
|
||||
|
||||
@@ -440,7 +440,7 @@ def bulk_create_employee_import(success_lists):
|
||||
employee_obj_list.append(employee_obj)
|
||||
result = []
|
||||
if employee_obj_list:
|
||||
result = Employee.objects.bulk_create(employee_obj_list)
|
||||
result = Employee.objects.bulk_create(employee_obj_list, batch_size=1000)
|
||||
|
||||
return result
|
||||
|
||||
@@ -740,8 +740,13 @@ def bulk_create_work_info_import(success_lists):
|
||||
reporting_manager_dict = optimize_reporting_manager_lookup()
|
||||
|
||||
for work_info in success_lists:
|
||||
email = work_info["Email"]
|
||||
badge_id = work_info["Badge ID"]
|
||||
employee_obj = existing_employees.get(badge_id)
|
||||
if not employee_obj:
|
||||
continue
|
||||
|
||||
email = work_info["Email"]
|
||||
employee_work_info = existing_employee_work_infos.get(employee_obj)
|
||||
department_obj = existing_departments.get(work_info.get("Department"))
|
||||
|
||||
job_position_key = (
|
||||
@@ -791,9 +796,6 @@ def bulk_create_work_info_import(success_lists):
|
||||
else 0
|
||||
)
|
||||
|
||||
employee_obj = existing_employees.get(badge_id)
|
||||
employee_work_info = existing_employee_work_infos.get(employee_obj)
|
||||
|
||||
if employee_work_info is None:
|
||||
# Create a new instance
|
||||
employee_work_info = EmployeeWorkInformation(
|
||||
@@ -841,7 +843,7 @@ def bulk_create_work_info_import(success_lists):
|
||||
update_work_info_list.append(employee_work_info)
|
||||
|
||||
if new_work_info_list:
|
||||
EmployeeWorkInformation.objects.bulk_create(new_work_info_list)
|
||||
EmployeeWorkInformation.objects.bulk_create(new_work_info_list, batch_size=1000)
|
||||
if update_work_info_list:
|
||||
EmployeeWorkInformation.objects.bulk_update(
|
||||
update_work_info_list,
|
||||
@@ -861,6 +863,7 @@ def bulk_create_work_info_import(success_lists):
|
||||
"basic_salary",
|
||||
"salary_hour",
|
||||
],
|
||||
batch_size=1000,
|
||||
)
|
||||
if apps.is_installed("payroll"):
|
||||
|
||||
|
||||
@@ -37,6 +37,14 @@ var noRowMessages = {
|
||||
fr: "Aucune ligne n'a été sélectionnée pour supprimer des employés.",
|
||||
};
|
||||
|
||||
var noRowUpdateMessages = {
|
||||
"ar": "لم يتم تحديد أي صفوف لتحديث الموظفين.",
|
||||
"de": "Es wurden keine Zeilen ausgewählt, um Mitarbeiter zu aktualisieren.",
|
||||
"es": "No se han seleccionado filas para actualizar empleados.",
|
||||
"en": "No rows have been selected to update employees.",
|
||||
"fr": "Aucune ligne n'a été sélectionnée pour mettre à jour des employés."
|
||||
};
|
||||
|
||||
var rowMessages = {
|
||||
ar: " تم الاختيار",
|
||||
de: " Ausgewählt",
|
||||
@@ -335,8 +343,8 @@ $("#employeeBulkUpdateId").click(function (e) {
|
||||
var languageCode = null;
|
||||
languageCode = $("#main-section-data").attr("data-lang");
|
||||
var textMessage =
|
||||
noRowMessages[languageCode] ||
|
||||
((languageCode = "en"), noRowMessages[languageCode]);
|
||||
noRowUpdateMessages[languageCode] ||
|
||||
((languageCode = "en"), noRowUpdateMessages[languageCode]);
|
||||
ids = [];
|
||||
ids.push($("#selectedInstances").attr("data-ids"));
|
||||
ids = JSON.parse($("#selectedInstances").attr("data-ids"));
|
||||
|
||||
@@ -298,7 +298,23 @@ def employee_view_individual(request, obj_id, **kwargs):
|
||||
"""
|
||||
This method is used to view profile of an employee.
|
||||
"""
|
||||
employee = Employee.objects.get(id=obj_id)
|
||||
try:
|
||||
employee = Employee.objects.get(id=obj_id)
|
||||
except ObjectDoesNotExist:
|
||||
try:
|
||||
employee = Employee.objects.entire().get(id=obj_id)
|
||||
company = getattr(
|
||||
getattr(employee, "employee_work_info", None), "company_id", None
|
||||
)
|
||||
company_id = getattr(company, "pk", None)
|
||||
if company_id != request.session["selected_company"]:
|
||||
messages.error(
|
||||
request, "Employee is not working in the selected company."
|
||||
)
|
||||
return redirect("employee-view")
|
||||
except Exception as e:
|
||||
return render(request, "404.html", status=404)
|
||||
|
||||
employee_leaves = (
|
||||
employee.available_leave.all() if apps.is_installed("leave") else None
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user