From 0d45e44d26ba8f0998dedf3adbcd82ea37d374d0 Mon Sep 17 00:00:00 2001 From: Horilla Date: Thu, 15 Feb 2024 12:12:55 +0530 Subject: [PATCH] [ADD] LEAVE: Horilla multi widge on the leave assign --- leave/forms.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/leave/forms.py b/leave/forms.py index 2ccfbdd75..1f9ae33a8 100644 --- a/leave/forms.py +++ b/leave/forms.py @@ -3,7 +3,10 @@ import re from typing import Any import uuid from django import forms +from django.core.files.base import File +from django.db.models.base import Model from django.forms import ModelForm +from django.forms.utils import ErrorList from django.forms.widgets import TextInput from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ @@ -13,7 +16,7 @@ from employee.filters import EmployeeFilter from employee.forms import MultipleFileField from employee.models import Employee from base.methods import reload_queryset -from horilla_widgets.forms import HorillaForm +from horilla_widgets.forms import HorillaForm, HorillaModelForm from horilla_widgets.widgets.horilla_multi_select_field import HorillaMultiSelectField from horilla_widgets.widgets.select_widgets import HorillaMultiSelectWidget from .models import ( @@ -503,16 +506,26 @@ class HolidayForm(ModelForm): self.fields['name'].widget.attrs['autocomplete'] = 'name' -class LeaveOneAssignForm(ModelForm): - employee_id = forms.ModelChoiceField( +class LeaveOneAssignForm(HorillaModelForm): + employee_id = HorillaMultiSelectField( queryset=Employee.objects.all(), - widget=forms.SelectMultiple, - empty_label=None, + widget=HorillaMultiSelectWidget( + filter_route_name="employee-widget-filter", + filter_class=EmployeeFilter, + filter_instance_contex_name="f", + filter_template_path="employee_filters.html", + required=True, + ), + label="Employee", ) class Meta: model = AvailableLeave fields = ["employee_id"] + + def __init__(self,*args, **kwargs): + super().__init__(*args, **kwargs) + reload_queryset(self.fields) class AvailableLeaveUpdateForm(ModelForm): @@ -576,7 +589,11 @@ class UserLeaveRequestForm(ModelForm): return cleaned_data def __init__(self, *args, employee=None, **kwargs): + leave_type = kwargs.pop('initial', None) super(UserLeaveRequestForm, self).__init__(*args, **kwargs) + self.fields['leave_type_id'].queryset = LeaveType.objects.filter(id=leave_type["leave_type_id"].id) + self.fields['leave_type_id'].initial= leave_type["leave_type_id"].id + self.fields['leave_type_id'].empty_label= None def as_p(self, *args, **kwargs): """ @@ -600,7 +617,6 @@ class UserLeaveRequestForm(ModelForm): ] widgets = { "employee_id": forms.HiddenInput(), - 'leave_type_id': forms.HiddenInput() }