[UPDT] PAYROLL: Updated payroll form parent class by inherit base app form class

This commit is contained in:
Horilla
2025-03-04 14:40:02 +05:30
parent 46adecc3db
commit 65e67df954
3 changed files with 12 additions and 136 deletions

View File

@@ -2,19 +2,16 @@
forms.py
"""
from datetime import date
from typing import Any
from django import forms
from django.forms import widgets
from django.template.loader import render_to_string
from django.utils.translation import gettext_lazy as trans
from django.utils.translation import gettext_lazy as _
from base.forms import Form
from base.methods import reload_queryset
from base.forms import Form, ModelForm
from employee.forms import MultipleFileField
from employee.models import Employee
from horilla import horilla_middlewares
from payroll.context_processors import get_active_employees
from payroll.models.models import (
Contract,
@@ -25,72 +22,12 @@ from payroll.models.models import (
)
class ModelForm(forms.ModelForm):
"""
ModelForm override for additional style
"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
reload_queryset(self.fields)
request = getattr(horilla_middlewares._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(
widget, (forms.NumberInput, forms.EmailInput, forms.TextInput)
):
label = trans(field.label)
field.widget.attrs.update(
{"class": "oh-input w-100", "placeholder": label}
)
elif isinstance(widget, (forms.Select,)):
field.widget.attrs.update(
{"class": "oh-select oh-select-2 select2-hidden-accessible"}
)
elif isinstance(widget, (forms.Textarea)):
label = trans(field.label)
field.widget.attrs.update(
{
"class": "oh-input w-100",
"placeholder": label,
"rows": 2,
"cols": 40,
}
)
elif isinstance(
widget,
(
forms.CheckboxInput,
forms.CheckboxSelectMultiple,
),
):
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):
"""
ContactForm
"""
verbose_name = trans("Contract")
verbose_name = _("Contract")
contract_start_date = forms.DateField()
contract_end_date = forms.DateField(required=False)
@@ -154,6 +91,9 @@ class ContractForm(ModelForm):
return table_html
def get_dynamic_hx_post_url(self, instance):
"""
Render the url for contract status update through hx request
"""
return f"/payroll/update-contract-status/{instance.pk}"
@@ -179,6 +119,10 @@ class reimbursementCommentForm(ModelForm):
verbose_name = "Add Comment"
class Meta:
"""
Meta class for additional options
"""
model = ReimbursementrequestComment
fields = "__all__"

View File

@@ -9,83 +9,15 @@ the widget attributes to enhance the user interface and provide a better user ex
"""
import uuid
from datetime import date
from django import forms
from django.utils.translation import gettext_lazy as _
from base.methods import reload_queryset
from horilla import horilla_middlewares
from base.forms import ModelForm
from payroll.methods import federal_tax
from payroll.models.models import FilingStatus
from payroll.models.tax_models import TaxBracket
class ModelForm(forms.ModelForm):
"""Custom ModelForm with enhanced widget attributes."""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
request = getattr(horilla_middlewares._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)
):
label = _(field.label)
input_widget.attrs.update(
{"class": "oh-input w-100", "placeholder": label}
)
elif isinstance(input_widget, (forms.Select,)):
label = ""
if field.label is not None:
label = _(field.label)
field.empty_label = str(_("---Choose {label}---")).format(label=label)
self.fields[field_name].widget.attrs.update(
{
"class": "oh-select oh-select-2 w-100",
"id": uuid.uuid4(),
"style": "height:50px;border-radius:0;",
}
)
elif isinstance(input_widget, (forms.Textarea)):
label = _(field.label.title())
input_widget.attrs.update(
{
"class": "oh-input w-100",
"placeholder": label,
"rows": 2,
"cols": 40,
}
)
elif isinstance(
input_widget,
(
forms.CheckboxInput,
forms.CheckboxSelectMultiple,
),
):
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."""

View File

@@ -1,4 +1,5 @@
from datetime import datetime
from django.apps import apps
from django.db.models.signals import post_save, pre_save
from django.dispatch import receiver
@@ -108,4 +109,3 @@ def create_installments(sender, instance, created, **kwargs):
installments.append(installment)
instance.deduction_ids.add(*installments)