From 9612bd9ad4a3ac943035d05e4e587c4d3fc0fb2b Mon Sep 17 00:00:00 2001 From: Horilla Date: Wed, 14 Feb 2024 14:58:09 +0530 Subject: [PATCH] [UPDT] GENERAL: Default values preloaded to forms --- attendance/forms.py | 17 +++++++++++++++++ base/forms.py | 16 +++++++++++++++- employee/forms.py | 16 ++++++++++++++++ leave/forms.py | 25 ++++++++++++++++++++++++- onboarding/forms.py | 15 +++++++++++++++ payroll/forms/forms.py | 15 +++++++++++++++ payroll/forms/tax_forms.py | 16 ++++++++++++++++ recruitment/forms.py | 16 ++++++++++++++++ 8 files changed, 134 insertions(+), 2 deletions(-) diff --git a/attendance/forms.py b/attendance/forms.py index fbd929561..e5d599c9a 100644 --- a/attendance/forms.py +++ b/attendance/forms.py @@ -31,6 +31,7 @@ from django.template.loader import render_to_string from django.utils.translation import gettext_lazy as _ from django.core.exceptions import ValidationError from django.forms import DateTimeInput +from base import thread_local_middleware from base.forms import MultipleFileField from horilla_widgets.widgets.horilla_multi_select_field import HorillaMultiSelectField from horilla_widgets.widgets.select_widgets import HorillaMultiSelectWidget @@ -61,8 +62,13 @@ class ModelForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) reload_queryset(self.fields) + request = getattr(thread_local_middleware._thread_locals, "request", None) + for field_name, field in self.fields.items(): widget = field.widget + if isinstance(widget, (forms.DateInput)): + field.initial = datetime.date.today() + if isinstance( widget, (forms.NumberInput, forms.EmailInput, forms.TextInput) ): @@ -110,6 +116,17 @@ class ModelForm(forms.ModelForm): attrs={"type": "time", "class": "oh-input w-100"} ) + try: + self.fields["employee_id"].initial = request.user.employee_get + except: + pass + + try: + self.fields["company_id"].initial = request.user.employee_get.get_company + except: + pass + + class AttendanceUpdateForm(ModelForm): """ diff --git a/base/forms.py b/base/forms.py index abd9ba671..d056be2b2 100644 --- a/base/forms.py +++ b/base/forms.py @@ -8,7 +8,7 @@ import os from typing import Any import uuid import datetime -from datetime import timedelta +from datetime import date, timedelta from django.contrib.auth import authenticate from django import forms from django.contrib.auth.models import Group, Permission, User @@ -17,6 +17,7 @@ from django.core.exceptions import ValidationError from django.utils.translation import gettext as _ from django.utils.translation import gettext_lazy as _trans from django.template.loader import render_to_string +from base import thread_local_middleware from employee.filters import EmployeeFilter from employee.models import Employee, EmployeeTag from base.models import ( @@ -165,8 +166,12 @@ class ModelForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) reload_queryset(self.fields) + request = getattr(thread_local_middleware._thread_locals, "request", None) for field_name, field in self.fields.items(): widget = field.widget + if isinstance(widget, (forms.DateInput)): + field.initial = date.today() + if isinstance( widget, (forms.NumberInput, forms.EmailInput, forms.TextInput, forms.FileInput), @@ -205,6 +210,15 @@ class ModelForm(forms.ModelForm): ): field.widget.attrs.update({"class": "oh-switch__checkbox"}) + try: + self.fields["employee_id"].initial = request.user.employee_get + except: + pass + + try: + self.fields["company_id"].initial = request.user.employee_get.get_company + except: + pass class Form(forms.Form): """ diff --git a/employee/forms.py b/employee/forms.py index 78c6eda17..66355b1d5 100644 --- a/employee/forms.py +++ b/employee/forms.py @@ -21,6 +21,7 @@ class YourForm(forms.Form): pass """ +from datetime import date import re from django import forms from django.db.models import Q @@ -28,6 +29,7 @@ from django.contrib.auth.models import User from django.forms import DateInput, ModelChoiceField, TextInput from django.utils.translation import gettext as _ from django.utils.translation import gettext_lazy as trans +from base import thread_local_middleware from horilla.decorators import logger from employee.models import ( Actiontype, @@ -50,9 +52,13 @@ class ModelForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + request = getattr(thread_local_middleware._thread_locals, "request", None) reload_queryset(self.fields) for _, field in self.fields.items(): widget = field.widget + if isinstance(widget, (forms.DateInput)): + field.initial = date.today() + if isinstance( widget, (forms.NumberInput, forms.EmailInput, forms.TextInput, forms.FileInput), @@ -89,6 +95,16 @@ class ModelForm(forms.ModelForm): ): field.widget.attrs.update({"class": "oh-switch__checkbox"}) + try: + self.fields["employee_id"].initial = request.user.employee_get + except: + pass + + try: + self.fields["company_id"].initial = request.user.employee_get.get_company + except: + pass + class UserForm(ModelForm): """ diff --git a/leave/forms.py b/leave/forms.py index b87959eba..2ccfbdd75 100644 --- a/leave/forms.py +++ b/leave/forms.py @@ -1,4 +1,4 @@ -from datetime import datetime +from datetime import date, datetime import re from typing import Any import uuid @@ -8,6 +8,7 @@ from django.forms.widgets import TextInput from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ from django.template.loader import render_to_string +from base import thread_local_middleware from employee.filters import EmployeeFilter from employee.forms import MultipleFileField from employee.models import Employee @@ -40,12 +41,14 @@ CHOICES = [("yes", _("Yes")), ("no", _("No"))] class ModelForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + request = getattr(thread_local_middleware._thread_locals, "request", None) reload_queryset(self.fields) for field_name, field in self.fields.items(): widget = field.widget if isinstance(widget, (forms.DateInput)): field.widget.attrs.update({"class": "oh-input oh-calendar-input w-100"}) + field.initial = date.today() elif isinstance( widget, (forms.NumberInput, forms.EmailInput, forms.TextInput) ): @@ -73,11 +76,21 @@ class ModelForm(forms.ModelForm): ), ): field.widget.attrs.update({"class": "oh-switch__checkbox"}) + try: + self.fields["employee_id"].initial = request.user.employee_get + except: + pass + + try: + self.fields["company_id"].initial = request.user.employee_get.get_company + except: + pass class ConditionForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + request = getattr(thread_local_middleware._thread_locals, "request", None) reload_queryset(self.fields) for field_name, field in self.fields.items(): widget = field.widget @@ -87,6 +100,8 @@ class ConditionForm(forms.ModelForm): ] = "width:100%; height:50px;border: 1px solid hsl(213deg,22%,84%);border-radius: 0rem;padding: 0.8rem 1.25rem;" elif isinstance(widget, (forms.DateInput)): field.widget.attrs.update({"class": "oh-input oh-calendar-input w-100"}) + field.initial = date.today() + elif isinstance( widget, (forms.NumberInput, forms.EmailInput, forms.TextInput) ): @@ -110,7 +125,15 @@ class ConditionForm(forms.ModelForm): ), ): field.widget.attrs.update({"class": "oh-switch__checkbox"}) + try: + self.fields["employee_id"].initial = request.user.employee_get + except: + pass + try: + self.fields["company_id"].initial = request.user.employee_get.get_company + except: + pass class LeaveTypeForm(ConditionForm): require_approval = forms.CharField( diff --git a/onboarding/forms.py b/onboarding/forms.py index 0d59ab969..32d83345f 100644 --- a/onboarding/forms.py +++ b/onboarding/forms.py @@ -20,6 +20,7 @@ class YourForm(forms.Form): # Custom validation logic goes here pass """ +from datetime import date from typing import Any import uuid from django import forms @@ -27,6 +28,7 @@ from django.forms import DateInput, ValidationError from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm as UserForm from django.utils.translation import gettext_lazy as _ +from base import thread_local_middleware from employee.models import Employee, EmployeeBankDetails from recruitment.models import Candidate from onboarding.models import CandidateTask, OnboardingStage, OnboardingTask @@ -40,10 +42,14 @@ class ModelForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + request = getattr(thread_local_middleware._thread_locals, "request", None) reload_queryset(self.fields) for _, field in self.fields.items(): widget = field.widget + if isinstance(widget, (forms.DateInput)): + field.initial = date.today() + if isinstance(widget, (forms.DateInput)): field.widget.attrs.update({"class": "oh-input w-100"}) elif isinstance( @@ -73,6 +79,15 @@ class ModelForm(forms.ModelForm): ), ): field.widget.attrs.update({"class": "oh-switch__checkbox"}) + try: + self.fields["employee_id"].initial = request.user.employee_get + except: + pass + + try: + self.fields["company_id"].initial = request.user.employee_get.get_company + except: + pass class UserCreationFormCustom(UserForm): diff --git a/payroll/forms/forms.py b/payroll/forms/forms.py index b6c61ead9..9920c7cad 100644 --- a/payroll/forms/forms.py +++ b/payroll/forms/forms.py @@ -2,10 +2,12 @@ forms.py """ +from datetime import date from django import forms from django.forms import widgets from django.utils.translation import gettext_lazy as trans from django.template.loader import render_to_string +from base import thread_local_middleware from payroll.models.models import ( EncashmentGeneralSettings, PayrollGeneralSetting, @@ -24,9 +26,13 @@ class ModelForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) reload_queryset(self.fields) + request = getattr(thread_local_middleware._thread_locals, "request", None) for _, field in self.fields.items(): widget = field.widget + if isinstance(widget, (forms.DateInput)): + field.initial = date.today() + if isinstance(widget, (forms.DateInput)): field.widget.attrs.update({"class": "oh-input oh-calendar-input w-100"}) elif isinstance( @@ -59,6 +65,15 @@ class ModelForm(forms.ModelForm): ): field.widget.attrs.update({"class": "oh-switch__checkbox"}) + try: + self.fields["employee_id"].initial = request.user.employee_get + except: + pass + + try: + self.fields["company_id"].initial = request.user.employee_get.get_company + except: + pass class ContractForm(ModelForm): """ diff --git a/payroll/forms/tax_forms.py b/payroll/forms/tax_forms.py index 750c85ac7..35c21d92e 100644 --- a/payroll/forms/tax_forms.py +++ b/payroll/forms/tax_forms.py @@ -8,9 +8,11 @@ The forms in this module inherit from the Django `forms.ModelForm` class and cus the widget attributes to enhance the user interface and provide a better user experience. """ +from datetime import date import uuid from django import forms from django.utils.translation import gettext_lazy as _ +from base import thread_local_middleware from payroll.models.tax_models import TaxBracket from base.methods import reload_queryset @@ -22,9 +24,14 @@ class ModelForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + request = getattr(thread_local_middleware._thread_locals, "request", None) reload_queryset(self.fields) for field_name, field in self.fields.items(): input_widget = field.widget + + if isinstance(input_widget, (forms.DateInput)): + field.initial = date.today() + if isinstance( input_widget, (forms.NumberInput, forms.EmailInput, forms.TextInput) ): @@ -63,6 +70,15 @@ class ModelForm(forms.ModelForm): ): input_widget.attrs.update({"class": "oh-switch__checkbox"}) + try: + self.fields["employee_id"].initial = request.user.employee_get + except: + pass + + try: + self.fields["company_id"].initial = request.user.employee_get.get_company + except: + pass class FilingStatusForm(ModelForm): """Form for creating and updating filing status.""" diff --git a/recruitment/forms.py b/recruitment/forms.py index 8573a8881..39765fca6 100644 --- a/recruitment/forms.py +++ b/recruitment/forms.py @@ -22,12 +22,14 @@ class YourForm(forms.Form): """ from ast import Dict +from datetime import date from typing import Any import uuid from django import forms from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ from django.template.loader import render_to_string +from base import thread_local_middleware from employee.filters import EmployeeFilter from employee.models import Employee from horilla_widgets.widgets.horilla_multi_select_field import HorillaMultiSelectField @@ -58,9 +60,13 @@ class ModelForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + request = getattr(thread_local_middleware._thread_locals, "request", None) reload_queryset(self.fields) for field_name, field in self.fields.items(): widget = field.widget + if isinstance(widget, (forms.DateInput)): + field.initial = date.today() + if isinstance( widget, (forms.NumberInput, forms.EmailInput, forms.TextInput, forms.FileInput), @@ -103,6 +109,16 @@ class ModelForm(forms.ModelForm): ): field.widget.attrs.update({"class": "oh-switch__checkbox "}) + try: + self.fields["employee_id"].initial = request.user.employee_get + except: + pass + + try: + self.fields["company_id"].initial = request.user.employee_get.get_company + except: + pass + class RegistrationForm(forms.ModelForm): """