diff --git a/payroll/forms/forms.py b/payroll/forms/forms.py index 4618a84fb..4ecf21e17 100644 --- a/payroll/forms/forms.py +++ b/payroll/forms/forms.py @@ -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__" diff --git a/payroll/forms/tax_forms.py b/payroll/forms/tax_forms.py index 870327706..47c64e6a8 100644 --- a/payroll/forms/tax_forms.py +++ b/payroll/forms/tax_forms.py @@ -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.""" diff --git a/payroll/signals.py b/payroll/signals.py index bc3bfa5c3..42b37a95d 100644 --- a/payroll/signals.py +++ b/payroll/signals.py @@ -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) -