2023-09-20 12:32:44 +05:30
|
|
|
"""
|
|
|
|
|
forms.py
|
|
|
|
|
|
|
|
|
|
Horilla forms
|
|
|
|
|
"""
|
2024-03-10 19:37:46 +05:30
|
|
|
|
2023-09-20 12:36:55 +05:30
|
|
|
from typing import Any, Dict
|
2024-05-07 12:23:36 +05:30
|
|
|
|
2023-09-20 12:32:44 +05:30
|
|
|
from django import forms
|
2024-05-07 12:23:36 +05:30
|
|
|
|
2023-09-20 12:32:44 +05:30
|
|
|
from horilla_widgets.widgets.horilla_multi_select_field import HorillaMultiSelectField
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class HorillaForm(forms.Form):
|
2023-09-20 12:36:55 +05:30
|
|
|
def clean(self) -> Dict[str, Any]:
|
2023-09-20 12:32:44 +05:30
|
|
|
for field_name, field_instance in self.fields.items():
|
|
|
|
|
if isinstance(field_instance, HorillaMultiSelectField):
|
|
|
|
|
self.errors.pop(field_name, None)
|
|
|
|
|
if len(self.data.getlist(field_name)) < 1:
|
2023-11-24 17:00:10 +05:30
|
|
|
raise forms.ValidationError({field_name: "This field is required"})
|
2023-09-20 12:32:44 +05:30
|
|
|
cleaned_data = super().clean()
|
|
|
|
|
employee_data = self.fields[field_name].queryset.filter(
|
|
|
|
|
id__in=self.data.getlist(field_name)
|
|
|
|
|
)
|
|
|
|
|
cleaned_data[field_name] = employee_data
|
|
|
|
|
cleaned_data = super().clean()
|
|
|
|
|
return cleaned_data
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class HorillaModelForm(forms.ModelForm):
|
2023-09-20 12:36:55 +05:30
|
|
|
def clean(self) -> Dict[str, Any]:
|
2023-09-20 12:32:44 +05:30
|
|
|
for field_name, field_instance in self.fields.items():
|
|
|
|
|
if isinstance(field_instance, HorillaMultiSelectField):
|
|
|
|
|
self.errors.pop(field_name, None)
|
|
|
|
|
if len(self.data.getlist(field_name)) < 1:
|
|
|
|
|
raise forms.ValidationError({field_name: "Thif field is required"})
|
|
|
|
|
cleaned_data = super().clean()
|
|
|
|
|
employee_data = self.fields[field_name].queryset.filter(
|
|
|
|
|
id__in=self.data.getlist(field_name)
|
|
|
|
|
)
|
|
|
|
|
cleaned_data[field_name] = employee_data
|
|
|
|
|
cleaned_data = super().clean()
|
|
|
|
|
return cleaned_data
|