[UPDT] EMPLOYEE: Updated employee form by adding additional def clean method for email exist validation

This commit is contained in:
Horilla
2025-02-28 15:08:15 +05:30
parent e5648b92a6
commit 57fe4f2014
3 changed files with 23 additions and 4 deletions

View File

@@ -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.
"""

View File

@@ -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
)

View File

@@ -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":