fix: autoname generated for Job Applicant is too long (#29260)
* fix: autoname generated for Job Applicant is too long - autoname based on email and append number if exists instead of concatenating name, email, title - add more search fields for context during selection * test: Job applicant naming and fix related tests
This commit is contained in:
		
							parent
							
								
									8b5827ed6d
								
							
						
					
					
						commit
						5cda4ea39f
					
				| @ -19,7 +19,7 @@ class TestEmployeeOnboarding(unittest.TestCase): | ||||
| 		if frappe.db.exists('Employee Onboarding', {'employee_name': 'Test Researcher'}): | ||||
| 			frappe.delete_doc('Employee Onboarding', {'employee_name': 'Test Researcher'}) | ||||
| 
 | ||||
| 		project = "Employee Onboarding : Test Researcher - test@researcher.com" | ||||
| 		project = "Employee Onboarding : test@researcher.com" | ||||
| 		frappe.db.sql("delete from tabProject where name=%s", project) | ||||
| 		frappe.db.sql("delete from tabTask where project=%s", project) | ||||
| 
 | ||||
| @ -27,7 +27,7 @@ class TestEmployeeOnboarding(unittest.TestCase): | ||||
| 		onboarding = create_employee_onboarding() | ||||
| 
 | ||||
| 		project_name = frappe.db.get_value('Project', onboarding.project, 'project_name') | ||||
| 		self.assertEqual(project_name, 'Employee Onboarding : Test Researcher - test@researcher.com') | ||||
| 		self.assertEqual(project_name, 'Employee Onboarding : test@researcher.com') | ||||
| 
 | ||||
| 		# don't allow making employee if onboarding is not complete | ||||
| 		self.assertRaises(IncompleteTaskError, make_employee, onboarding.name) | ||||
| @ -64,8 +64,8 @@ class TestEmployeeOnboarding(unittest.TestCase): | ||||
| 
 | ||||
| 
 | ||||
| def get_job_applicant(): | ||||
| 	if frappe.db.exists('Job Applicant', 'Test Researcher - test@researcher.com'): | ||||
| 		return frappe.get_doc('Job Applicant', 'Test Researcher - test@researcher.com') | ||||
| 	if frappe.db.exists('Job Applicant', 'test@researcher.com'): | ||||
| 		return frappe.get_doc('Job Applicant', 'test@researcher.com') | ||||
| 	applicant = frappe.new_doc('Job Applicant') | ||||
| 	applicant.applicant_name = 'Test Researcher' | ||||
| 	applicant.email_id = 'test@researcher.com' | ||||
|  | ||||
| @ -192,10 +192,11 @@ | ||||
|  "idx": 1, | ||||
|  "index_web_pages_for_search": 1, | ||||
|  "links": [], | ||||
|  "modified": "2021-09-29 23:06:10.904260", | ||||
|  "modified": "2022-01-12 16:28:53.196881", | ||||
|  "modified_by": "Administrator", | ||||
|  "module": "HR", | ||||
|  "name": "Job Applicant", | ||||
|  "naming_rule": "Expression (old style)", | ||||
|  "owner": "Administrator", | ||||
|  "permissions": [ | ||||
|   { | ||||
| @ -210,10 +211,11 @@ | ||||
|    "write": 1 | ||||
|   } | ||||
|  ], | ||||
|  "search_fields": "applicant_name", | ||||
|  "search_fields": "applicant_name, email_id, job_title, phone_number", | ||||
|  "sender_field": "email_id", | ||||
|  "sort_field": "modified", | ||||
|  "sort_order": "ASC", | ||||
|  "states": [], | ||||
|  "subject_field": "notes", | ||||
|  "title_field": "applicant_name" | ||||
| } | ||||
| @ -7,6 +7,7 @@ | ||||
| import frappe | ||||
| from frappe import _ | ||||
| from frappe.model.document import Document | ||||
| from frappe.model.naming import append_number_if_name_exists | ||||
| from frappe.utils import validate_email_address | ||||
| 
 | ||||
| from erpnext.hr.doctype.interview.interview import get_interviewers | ||||
| @ -21,10 +22,11 @@ class JobApplicant(Document): | ||||
| 			self.get("__onload").job_offer = job_offer[0].name | ||||
| 
 | ||||
| 	def autoname(self): | ||||
| 		keys = filter(None, (self.applicant_name, self.email_id, self.job_title)) | ||||
| 		if not keys: | ||||
| 			frappe.throw(_("Name or Email is mandatory"), frappe.NameError) | ||||
| 		self.name = " - ".join(keys) | ||||
| 		self.name = self.email_id | ||||
| 
 | ||||
| 		# applicant can apply more than once for a different job title or reapply | ||||
| 		if frappe.db.exists("Job Applicant", self.name): | ||||
| 			self.name = append_number_if_name_exists("Job Applicant", self.name) | ||||
| 
 | ||||
| 	def validate(self): | ||||
| 		if self.email_id: | ||||
|  | ||||
| @ -9,7 +9,26 @@ from erpnext.hr.doctype.designation.test_designation import create_designation | ||||
| 
 | ||||
| 
 | ||||
| class TestJobApplicant(unittest.TestCase): | ||||
| 	pass | ||||
| 	def test_job_applicant_naming(self): | ||||
| 		applicant = frappe.get_doc({ | ||||
| 			"doctype": "Job Applicant", | ||||
| 			"status": "Open", | ||||
| 			"applicant_name": "_Test Applicant", | ||||
| 			"email_id": "job_applicant_naming@example.com" | ||||
| 		}).insert() | ||||
| 		self.assertEqual(applicant.name, 'job_applicant_naming@example.com') | ||||
| 
 | ||||
| 		applicant = frappe.get_doc({ | ||||
| 			"doctype": "Job Applicant", | ||||
| 			"status": "Open", | ||||
| 			"applicant_name": "_Test Applicant", | ||||
| 			"email_id": "job_applicant_naming@example.com" | ||||
| 		}).insert() | ||||
| 		self.assertEqual(applicant.name, 'job_applicant_naming@example.com-1') | ||||
| 
 | ||||
| 	def tearDown(self): | ||||
| 		frappe.db.rollback() | ||||
| 
 | ||||
| 
 | ||||
| def create_job_applicant(**args): | ||||
| 	args = frappe._dict(args) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user