diff --git a/horilla_widgets/__init__.py b/horilla_widgets/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/horilla_widgets/admin.py b/horilla_widgets/admin.py new file mode 100644 index 000000000..8c38f3f3d --- /dev/null +++ b/horilla_widgets/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/horilla_widgets/apps.py b/horilla_widgets/apps.py new file mode 100644 index 000000000..7557bb558 --- /dev/null +++ b/horilla_widgets/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class HorillaWidgetsConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'horilla_widgets' diff --git a/horilla_widgets/forms.py b/horilla_widgets/forms.py new file mode 100644 index 000000000..8c1cdff8c --- /dev/null +++ b/horilla_widgets/forms.py @@ -0,0 +1,40 @@ +""" +forms.py + +Horilla forms +""" +from typing import Any +from django import forms +from horilla_widgets.widgets.horilla_multi_select_field import HorillaMultiSelectField + + +class HorillaForm(forms.Form): + def clean(self) -> dict[str, Any]: + 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 + + +class HorillaModelForm(forms.ModelForm): + def clean(self) -> dict[str, Any]: + 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 diff --git a/horilla_widgets/migrations/__init__.py b/horilla_widgets/migrations/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/horilla_widgets/models.py b/horilla_widgets/models.py new file mode 100644 index 000000000..71a836239 --- /dev/null +++ b/horilla_widgets/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/horilla_widgets/templates/horilla_widgets/horilla_multiselect_widget.html b/horilla_widgets/templates/horilla_widgets/horilla_multiselect_widget.html new file mode 100644 index 000000000..2307a8608 --- /dev/null +++ b/horilla_widgets/templates/horilla_widgets/horilla_multiselect_widget.html @@ -0,0 +1,180 @@ +{% load i18n %} + +