From 57fe4f2014c3a9479562059abd9dff3cc6f5e205 Mon Sep 17 00:00:00 2001 From: Horilla Date: Fri, 28 Feb 2025 15:08:15 +0530 Subject: [PATCH] [UPDT] EMPLOYEE: Updated employee form by adding additional def clean method for email exist validation --- base/horilla_company_manager.py | 2 +- employee/forms.py | 21 ++++++++++++++++++++- employee/views.py | 4 ++-- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/base/horilla_company_manager.py b/base/horilla_company_manager.py index af3b1567c..c2ff4e982 100644 --- a/base/horilla_company_manager.py +++ b/base/horilla_company_manager.py @@ -104,7 +104,7 @@ class HorillaCompanyManager(models.Manager): setattr(_thread_locals, "queryset_filter", queryset) return queryset - def get_all(self): + def entire(self): """ Fetch all datas from a model without applying any company filter. """ diff --git a/employee/forms.py b/employee/forms.py index fba559b0d..2bbff1c87 100644 --- a/employee/forms.py +++ b/employee/forms.py @@ -191,6 +191,25 @@ class EmployeeForm(ModelForm): context = {"form": self} return render_to_string("employee/create_form/personal_info_as_p.html", context) + def clean(self): + super().clean() + email = self.cleaned_data["email"] + all_employees = Employee.objects.entire() + exit_employee = all_employees.filter(email=email).first() + + if exit_employee: + company_id = getattr( + getattr(exit_employee, "employee_work_info", None), "company_id", None + ) + if company_id: + error_message = _( + "Employee with this Email already exists in company {}" + ).format(company_id) + else: + error_message = _(f"Employee with this Email already exists") + + raise forms.ValidationError({"email": error_message}) + def get_next_badge_id(self): """ This method is used to generate badge id @@ -248,7 +267,7 @@ class EmployeeForm(ModelForm): """ badge_id = self.cleaned_data["badge_id"] if badge_id: - all_employees = Employee.objects.get_all() + all_employees = Employee.objects.entire() queryset = all_employees.filter(badge_id=badge_id).exclude( pk=self.instance.pk if self.instance else None ) diff --git a/employee/views.py b/employee/views.py index 675a13eb1..855475604 100755 --- a/employee/views.py +++ b/employee/views.py @@ -1353,11 +1353,11 @@ def employee_view_update(request, obj_id, **kwargs): work_info_history = True employee = Employee.objects.filter(id=obj_id).first() - all_employees = Employee.objects.get_all() + all_employees = Employee.objects.entire() emp = all_employees.filter(id=obj_id).first() if employee is None: employee = emp - all_work_info = EmployeeWorkInformation.objects.get_all() + all_work_info = EmployeeWorkInformation.objects.entire() cmpny = Company.objects.get(id=company) work = all_work_info.filter(employee_id=employee).first() if company != "all":