XH_Digital_Management/application/hrm_mgnt/forms.py

239 lines
10 KiB
Python

from django import forms
from .models import *
class EmployeeInformationForm(forms.ModelForm):
"""
人力资源管理-人员基本信息表单
"""
class Meta:
model = EmployeeInformation
exclude = ['resignation_type', 'resignation_reason', 'resignation_date']
widgets = {
'name': forms.TextInput(attrs={'class': 'form-control'}),
'id_number': forms.TextInput(attrs={'class': 'form-control'}),
'gender': forms.Select(choices=EmployeeInformation.GENDER_CHOICES, attrs={'class': 'form-control'}),
'birthday': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
'age': forms.NumberInput(attrs={'class': 'form-control'}),
'height': forms.NumberInput(attrs={'class': 'form-control'}),
'weight': forms.NumberInput(attrs={'class': 'form-control'}),
'blood_type': forms.Select(choices=EmployeeInformation.BLOOD_TYPE_CHOICES, attrs={'class': 'form-control'}),
'ethnicity': forms.TextInput(attrs={'class': 'form-control'}),
'domicile': forms.TextInput(attrs={'class': 'form-control'}),
'marital_status': forms.Select(choices=EmployeeInformation.MARITAL_STATUS_CHOICES, attrs={'class': 'form-control'}),
'political_affiliation': forms.Select(choices=EmployeeInformation.POLITICAL_AFFILIATION_CHOICES, attrs={'class': 'form-control'}),
'entry_date': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
'regularization_date': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
'employment_type': forms.Select(choices=EmployeeInformation.EMPLOYMENT_TYPE_CHOICES, attrs={'class': 'form-control'}),
'status': forms.Select(choices=EmployeeInformation.STATUS_CHOICES, attrs={'class': 'form-control'}),
'secondary_department': forms.Select(attrs={'class': 'form-control'}),
'contract_end_date': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
'mobile_number': forms.TextInput(attrs={'class': 'form-control'}),
'email': forms.EmailInput(attrs={'class': 'form-control'}),
'mailing_address': forms.TextInput(attrs={'class': 'form-control'}),
'emergency_contact': forms.TextInput(attrs={'class': 'form-control'}),
'relation_with_contact': forms.TextInput(attrs={'class': 'form-control'}),
'emergency_contact_phone': forms.TextInput(attrs={'class': 'form-control'}),
'education': forms.Select(choices=EmployeeInformation.EDUCATION_CHOICES, attrs={'class': 'form-control'}),
'undergraduate_school': forms.TextInput(attrs={'class': 'form-control'}),
'graduate_school': forms.TextInput(attrs={'class': 'form-control'}),
'major': forms.TextInput(attrs={'class': 'form-control'}),
'technical_title': forms.TextInput(attrs={'class': 'form-control'}),
'base_salary': forms.NumberInput(attrs={'class': 'form-control'}),
'salary_account_number': forms.TextInput(attrs={'class': 'form-control'}),
'bank_of_salary_account': forms.TextInput(attrs={'class': 'form-control'})
}
def __init__(self, *args, **kwargs):
is_edit = kwargs.pop('is_edit', False)
super(EmployeeInformationForm, self).__init__(*args, **kwargs)
self.fields['primary_department'] = forms.ChoiceField(
choices=[('', '---------')] + [(dept.department_name, dept.department_name) for dept in
PrimaryDepartment.objects.all()],
widget=forms.Select(attrs={'class': 'form-control'}),
label="一级部门",
required=False
)
self.fields['position'] = forms.ChoiceField(
choices=[('', '---------')] + [(p.position_name, p.position_name) for p in Position.objects.all()],
widget=forms.Select(attrs={'class': 'form-control'}),
label="岗位",
required=False
)
self.fields['rank'] = forms.ChoiceField(
choices=[('', '---------')] + [(r.rank_name, r.rank_name) for r in Rank.objects.all()],
widget=forms.Select(attrs={'class': 'form-control'}),
label="职级",
required=False
)
for field_name in self.fields:
if field_name != 'name':
self.fields[field_name].required = False
if is_edit:
self.fields['resignation_type'] = forms.ChoiceField(
choices=[('', '---------')] + [(r[0], r[0]) for r in EmployeeInformation.RESIGNATION_TYPE_CHOICES],
widget=forms.Select(attrs={'class': 'form-control'}),
label="离职类型",
required=False
)
self.fields['resignation_reason'] = forms.CharField(
widget=forms.TextInput(attrs={'class': 'form-control'}),
label="离职原因",
required=False
)
self.fields['resignation_date'] = forms.DateField(
widget=forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
label="离职日期",
required=False
)
if self.instance:
self.fields['resignation_type'].initial = self.instance.resignation_type
self.fields['resignation_reason'].initial = self.instance.resignation_reason
self.fields['resignation_date'].initial = self.instance.resignation_date
class EmployeeAttendanceRecordForm(forms.ModelForm):
"""
人力资源管理-员工考勤记录表单
"""
class Meta:
model = EmployeeAttendanceRecord
fields = '__all__'
widgets = {
'name': forms.TextInput(attrs={'class': 'form-control'}),
'late': forms.NumberInput(attrs={'class': 'form-control'}),
'early_leave': forms.NumberInput(attrs={'class': 'form-control'}),
'absenteeism': forms.NumberInput(attrs={'class': 'form-control'}),
'annual_leave': forms.NumberInput(attrs={'class': 'form-control'}),
'personal_leave': forms.NumberInput(attrs={'class': 'form-control'}),
'sick_leave': forms.NumberInput(attrs={'class': 'form-control'}),
'other_leave_details_id': forms.NumberInput(attrs={'class': 'form-control'}),
}
def __init__(self, *args, **kwargs):
super(EmployeeAttendanceRecordForm, self).__init__(*args, **kwargs)
self.fields['year_month'].widget = forms.DateInput(attrs={'type': 'month', 'class': 'form-control'})
self.fields['primary_department'] = forms.ChoiceField(
choices=[('', '---------')] + [(dept.department_name, dept.department_name) for dept in
PrimaryDepartment.objects.all()],
widget=forms.Select(attrs={'class': 'form-control'}),
label="一级部门",
required=False
)
class OtherLeaveDetailsForm(forms.ModelForm):
class Meta:
model = OtherLeaveDetails
fields = ['attendance_record', 'leave_type', 'days', 'description']
def __init__(self, *args, **kwargs):
is_edit = kwargs.pop('is_edit', False)
super(OtherLeaveDetailsForm, self).__init__(*args, **kwargs)
for field_name in self.fields:
self.fields[field_name].required = False
class AnnualLeaveRecordForm(forms.ModelForm):
"""
人力资源管理-年假使用记录表单
"""
class Meta:
model = AnnualLeaveRecord
fields = ['year', 'employee_name', 'primary_department', 'total_annual_leave', 'used_annual_leave']
widgets = {
'year': forms.NumberInput(attrs={'class': 'form-control'}),
'employee_name': forms.TextInput(attrs={'class': 'form-control'}),
'total_annual_leave': forms.NumberInput(attrs={'class': 'form-control'}),
'used_annual_leave': forms.NumberInput(attrs={'class': 'form-control'}),
}
def __init__(self, *args, **kwargs):
super(AnnualLeaveRecordForm, self).__init__(*args, **kwargs)
self.fields['primary_department'] = forms.ChoiceField(
choices=[('', '---------')] + [(dept.department_name, dept.department_name) for dept in
PrimaryDepartment.objects.all()],
widget=forms.Select(attrs={'class': 'form-control'}),
label="一级部门"
)
for field_name in self.fields:
if field_name not in ['primary_department', 'year', 'employee_name']:
self.fields[field_name].required = False
class RankForm(forms.ModelForm):
"""
人力资源管理-职级表单
"""
class Meta:
model = Rank
fields = '__all__'
widgets = {
'rank_name': forms.TextInput(attrs={'class': 'form-control'}),
'rank_description': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
}
def __init__(self, *args, **kwargs):
is_edit = kwargs.pop('is_edit', False)
super(RankForm, self).__init__(*args, **kwargs)
for field_name in self.fields:
if field_name != 'rank_name':
self.fields[field_name].required = False
class PositionForm(forms.ModelForm):
"""
人力资源管理-岗位表单
"""
class Meta:
model = Position
fields = '__all__'
widgets = {
'position_name': forms.TextInput(attrs={'class': 'form-control'}),
'position_description': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
}
def __init__(self, *args, **kwargs):
is_edit = kwargs.pop('is_edit', False)
super(PositionForm, self).__init__(*args, **kwargs)
for field_name in self.fields:
if field_name != 'position_name':
self.fields[field_name].required = False
class PerformanceEvaluationForm(forms.ModelForm):
"""
人力资源管理-员工绩效表单
"""
class Meta:
model = PerformanceEvaluation
fields = '__all__'
def __init__(self, *args, **kwargs):
super(PerformanceEvaluationForm, self).__init__(*args, **kwargs)
self.fields['primary_department'] = forms.ChoiceField(
choices=[('', '---------')] + [(dept.department_name, dept.department_name) for dept in
PrimaryDepartment.objects.all()],
widget=forms.Select(attrs={'class': 'form-control'}),
label="一级部门"
)