Payroll beta (#17)
* [ADD]payroll * [UPDT]add payroll to submenu * [UPDT]add payroll url to main urls * [FIX]payroll url to main urls * [FIX]payslip generate date bug * [UPDT]Payroll changes
This commit is contained in:
110
payroll/forms/forms.py
Normal file
110
payroll/forms/forms.py
Normal file
@@ -0,0 +1,110 @@
|
||||
"""
|
||||
forms.py
|
||||
"""
|
||||
from django import forms
|
||||
from django.utils.translation import gettext_lazy as trans
|
||||
from django.template.loader import render_to_string
|
||||
from payroll.models.models import WorkRecord
|
||||
from payroll.models.models import Contract
|
||||
|
||||
|
||||
class ModelForm(forms.ModelForm):
|
||||
"""
|
||||
ModelForm override for additional style
|
||||
"""
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
for _, 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"})
|
||||
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"})
|
||||
|
||||
|
||||
class ContractForm(ModelForm):
|
||||
"""
|
||||
ContactForm
|
||||
"""
|
||||
verbose_name = trans("Contract")
|
||||
class Meta:
|
||||
"""
|
||||
Meta class for additional options
|
||||
"""
|
||||
|
||||
fields = "__all__"
|
||||
exclude = [
|
||||
"is_active",
|
||||
]
|
||||
model = Contract
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields["contract_name"].widget.attrs["autocomplete"] = "off"
|
||||
self.fields["contract_start_date"].widget.attrs["autocomplete"] = "off"
|
||||
self.fields["contract_start_date"].widget.attrs["class"] = "oh-input w-100"
|
||||
self.fields["contract_start_date"].widget = forms.TextInput(
|
||||
attrs={"type": "date", "class": "oh-input w-100"}
|
||||
)
|
||||
self.fields["contract_end_date"].widget.attrs["autocomplete"] = "off"
|
||||
self.fields["contract_end_date"].widget.attrs["class"] = "oh-input w-100"
|
||||
self.fields["contract_end_date"].widget = forms.TextInput(
|
||||
attrs={"type": "date", "class": "oh-input w-100"}
|
||||
)
|
||||
self.fields["employee_id"].widget.attrs["data-contract-style"] = ""
|
||||
self.fields["department"].widget.attrs["data-contract-style"] = ""
|
||||
self.fields["job_position"].widget.attrs["data-contract-style"] = ""
|
||||
self.fields["job_role"].widget.attrs["data-contract-style"] = ""
|
||||
self.fields["work_type"].widget.attrs["data-contract-style"] = ""
|
||||
self.fields["shift"].widget.attrs["data-contract-style"] = ""
|
||||
|
||||
def as_p(self):
|
||||
"""
|
||||
Render the form fields as HTML table rows with Bootstrap styling.
|
||||
"""
|
||||
context = {"form": self}
|
||||
table_html = render_to_string("contract_form.html", context)
|
||||
return table_html
|
||||
|
||||
|
||||
class WorkRecordForm(ModelForm):
|
||||
"""
|
||||
WorkRecordForm
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
"""
|
||||
Meta class for additional options
|
||||
"""
|
||||
|
||||
fields = "__all__"
|
||||
model = WorkRecord
|
||||
Reference in New Issue
Block a user