diff --git a/employee/methods/methods.py b/employee/methods/methods.py index 6d3ef852e..c04505a52 100644 --- a/employee/methods/methods.py +++ b/employee/methods/methods.py @@ -2,6 +2,7 @@ employee/methods.py """ +import logging import threading from datetime import datetime from itertools import groupby @@ -23,6 +24,8 @@ from base.models import ( ) from employee.models import Employee, EmployeeWorkInformation +logger = logging.getLogger(__name__) + def convert_nan(field, dicts): """ @@ -139,9 +142,10 @@ def bulk_create_user_import(success_lists): is_superuser=False, ) user_obj_list.append(user_obj) - + result = [] if user_obj_list: - User.objects.bulk_create(user_obj_list) + result = User.objects.bulk_create(user_obj_list) + return result def bulk_create_employee_import(success_lists): @@ -167,7 +171,6 @@ def bulk_create_employee_import(success_lists): last_name = convert_nan("Last Name", work_info) phone = work_info["Phone"] gender = work_info.get("Gender", "").lower() - employee_obj = Employee( employee_user_id=user, badge_id=badge_id, @@ -178,11 +181,26 @@ def bulk_create_employee_import(success_lists): gender=gender, ) employee_obj_list.append(employee_obj) - + result = [] if employee_obj_list: - Employee.objects.bulk_create(employee_obj_list) + result = Employee.objects.bulk_create(employee_obj_list) - return len(employee_obj_list) + return result + + +def set_initial_password(employees): + """ + method to set initial password + """ + + logger.info("started to set initial password") + for employee in employees: + try: + employee.employee_user_id.set_password(str(employee.phone)) + employee.employee_user_id.save() + except Exception as e: + logger.error(f"falied to set initial password for {employee}") + logger.info("initial password configured") def optimize_reporting_manager_lookup(success_lists): diff --git a/employee/views.py b/employee/views.py index 4bb82c8cd..dcd9c94f4 100755 --- a/employee/views.py +++ b/employee/views.py @@ -17,6 +17,7 @@ import json import operator import os import re +import threading from datetime import date, datetime, timedelta from urllib.parse import parse_qs @@ -94,6 +95,7 @@ from employee.methods.methods import ( bulk_create_work_types, convert_nan, get_ordered_badge_ids, + set_initial_password, ) from employee.models import ( BonusPoint, @@ -2501,6 +2503,7 @@ def work_info_import(request): "employee_first_name", "employee_last_name", "email" ) ) + users = [] for work_info in work_info_dicts: error = False try: @@ -2595,8 +2598,14 @@ def work_info_import(request): if create_work_info or not error_lists: try: - bulk_create_user_import(success_lists) - total_count = bulk_create_employee_import(success_lists) + users = bulk_create_user_import(success_lists) + employees = bulk_create_employee_import(success_lists) + thread = threading.Thread( + target=set_initial_password, args=(employees,) + ) + thread.start() + + total_count = len(employees) bulk_create_department_import(success_lists) bulk_create_job_position_import(success_lists) bulk_create_job_role_import(success_lists)