82 lines
3.4 KiB
Python
82 lines
3.4 KiB
Python
from django import forms
|
|
from .models import Company, JobStatus, RequiredFolder, Job, JobFile
|
|
|
|
class CompanyForm(forms.ModelForm):
|
|
class Meta:
|
|
model = Company
|
|
fields = ['name', 'is_uprn_required']
|
|
widgets = {
|
|
'name': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'e.g. Acme Repairs Ltd'}),
|
|
'is_uprn_required': forms.CheckboxInput(attrs={'class': 'form-check-input'}),
|
|
}
|
|
|
|
class JobStatusForm(forms.ModelForm):
|
|
class Meta:
|
|
model = JobStatus
|
|
fields = ['name', 'is_starting_status']
|
|
widgets = {
|
|
'name': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Status Name'}),
|
|
'is_starting_status': forms.CheckboxInput(attrs={'class': 'form-check-input'}),
|
|
}
|
|
|
|
class RequiredFolderForm(forms.ModelForm):
|
|
class Meta:
|
|
model = RequiredFolder
|
|
fields = ['name']
|
|
widgets = {
|
|
'name': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Folder Name (e.g. Photos)'}),
|
|
}
|
|
|
|
class JobForm(forms.ModelForm):
|
|
class Meta:
|
|
model = Job
|
|
fields = ['job_ref', 'uprn', 'address_line_1', 'address_line_2', 'address_line_3', 'postcode', 'description', 'action', 'notes', 'status']
|
|
widgets = {
|
|
'job_ref': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'uprn': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'address_line_1': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'address_line_2': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'address_line_3': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'postcode': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'description': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
|
|
'action': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
|
|
'notes': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
|
|
'status': forms.Select(attrs={'class': 'form-control'}),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
company = kwargs.pop('company', None)
|
|
super().__init__(*args, **kwargs)
|
|
if company:
|
|
self.fields['status'].queryset = JobStatus.objects.filter(company=company)
|
|
# Set initial status to starting status if creating new job
|
|
if not self.instance.pk:
|
|
starting_status = JobStatus.objects.filter(company=company, is_starting_status=True).first()
|
|
if starting_status:
|
|
self.fields['status'].initial = starting_status
|
|
|
|
if company.is_uprn_required:
|
|
self.fields['uprn'].required = True
|
|
else:
|
|
self.fields['uprn'].required = False
|
|
|
|
def clean_uprn(self):
|
|
uprn = self.cleaned_data.get('uprn')
|
|
if not uprn:
|
|
return None
|
|
return uprn
|
|
|
|
class JobFileForm(forms.ModelForm):
|
|
class Meta:
|
|
model = JobFile
|
|
fields = ['file']
|
|
widgets = {
|
|
'file': forms.ClearableFileInput(attrs={'class': 'form-control'}),
|
|
}
|
|
|
|
class ImportJobsForm(forms.Form):
|
|
file = forms.FileField(label="Excel/CSV File", widget=forms.ClearableFileInput(attrs={'class': 'form-control'}))
|
|
|
|
|
|
class InviteUserForm(forms.Form):
|
|
email = forms.EmailField(label="User Email", widget=forms.EmailInput(attrs={'class': 'form-control', 'placeholder': 'email@example.com'})) |