From ae1751ecca969fb91fdc63de5d4bfa05306636e2 Mon Sep 17 00:00:00 2001 From: Horilla Date: Thu, 16 Nov 2023 14:45:58 +0530 Subject: [PATCH] [UPDT] LEAVE: Start date break down and end date break down mismatch validation added --- leave/forms.py | 41 ++++++++++++++++++++++++++++++++++++----- leave/views.py | 2 +- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/leave/forms.py b/leave/forms.py index bf2c2b5ca..2e4c1b81e 100644 --- a/leave/forms.py +++ b/leave/forms.py @@ -208,7 +208,11 @@ class LeaveRequestCreationForm(ModelForm): raise forms.ValidationError( _("End date should not be less than start date.") ) - + if start_date == end_date: + if start_date_breakdown != end_date_breakdown: + raise forms.ValidationError( + _("There is a mismatch in the breakdown of the start date and end date.") + ) if not AvailableLeave.objects.filter( employee_id=employee_id, leave_type_id=leave_type_id ).exists(): @@ -301,7 +305,11 @@ class LeaveRequestUpdationForm(ModelForm): raise forms.ValidationError( _("End date should not be less than start date.") ) - + if start_date == end_date: + if start_date_breakdown != end_date_breakdown: + raise forms.ValidationError( + _("There is a mismatch in the breakdown of the start date and end date.") + ) if not AvailableLeave.objects.filter( employee_id=employee_id, leave_type_id=leave_type_id ).exists(): @@ -451,7 +459,14 @@ class UserLeaveRequestForm(ModelForm): cleaned_data = super().clean() start_date = cleaned_data.get("start_date") end_date = cleaned_data.get("end_date") + start_date_breakdown = cleaned_data.get("start_date_breakdown") + end_date_breakdown = cleaned_data.get('end_date_breakdown') + if start_date == end_date: + if start_date_breakdown != end_date_breakdown: + raise forms.ValidationError( + _("There is a mismatch in the breakdown of the start date and end date.") + ) if not start_date <= end_date: raise forms.ValidationError( _("End date should not be less than start date.") @@ -545,12 +560,22 @@ class UserLeaveRequestCreationForm(ModelForm): start_date = forms.DateField(widget=forms.DateInput(attrs={"type": "date"})) end_date = forms.DateField(widget=forms.DateInput(attrs={"type": "date"})) + def as_p(self, *args, **kwargs): + """ + Render the form fields as HTML table rows with Bootstrap styling. + """ + context = {"form": self} + table_html = render_to_string("attendance_form.html", context) + return table_html + def clean(self): cleaned_data = super().clean() start_date = cleaned_data.get("start_date") end_date = cleaned_data.get("end_date") employee_id = cleaned_data.get("employee_id") leave_type_id = cleaned_data.get("leave_type_id") + start_date_breakdown = cleaned_data.get("start_date_breakdown") + end_date_breakdown = cleaned_data.get('end_date_breakdown') overlapping_requests = LeaveRequest.objects.filter( employee_id=employee_id, start_date__lte=end_date, end_date__gte=start_date ) @@ -559,7 +584,11 @@ class UserLeaveRequestCreationForm(ModelForm): raise forms.ValidationError( _("End date should not be less than start date.") ) - + if start_date == end_date: + if start_date_breakdown != end_date_breakdown: + raise forms.ValidationError( + _("There is a mismatch in the breakdown of the start date and end date.") + ) if not AvailableLeave.objects.filter( employee_id=employee_id, leave_type_id=leave_type_id ).exists(): @@ -577,7 +606,6 @@ class UserLeaveRequestCreationForm(ModelForm): available_leave.available_days + available_leave.carryforward_days ) requested_days = (end_date - start_date).days + 1 - print(f"reqdays = {requested_days}") cleaned_data["requested_days"] = requested_days if not requested_days <= total_leave_days: @@ -598,7 +626,10 @@ class UserLeaveRequestCreationForm(ModelForm): "attachment", "requested_days", ] - widgets = {"employee_id": forms.HiddenInput()} + widgets = { + "employee_id": forms.HiddenInput(), + 'requested_days': forms.HiddenInput() + } class LeaveAllocationRequestForm(ModelForm): diff --git a/leave/views.py b/leave/views.py index c669da739..73e503c57 100644 --- a/leave/views.py +++ b/leave/views.py @@ -386,7 +386,7 @@ def leave_requests_export(request): @login_required @hx_request_required -@manager_can_enter("leave.view_leaverequest") +# @manager_can_enter("leave.view_leaverequest") def leave_request_filter(request): """ function used to filter leave request.