Select Git revision
-
Jonathon Stadon authoredJonathon Stadon authored
forms.py 5.20 KiB
from django import forms
from django.contrib.auth.forms import UserCreationForm
from .models import CustomUser, JobSeekerProfile, EmployerProfile, STATUS_CHOICES, CATEGORY_CHOICES
from django import forms
class EmployerProfileForm(forms.ModelForm):
class Meta:
model = EmployerProfile
fields = [
'business_name',
'business_type',
'business_category',
'location',
'region',
'status',
'fields_for_jobs',
]
widgets = {
'business_name': forms.TextInput(attrs={'class': 'form-control'}),
'business_type': forms.Select(attrs={'class': 'form-control'}),
'business_category': forms.Select(choices=CATEGORY_CHOICES, attrs={'class': 'form-control'}),
'location': forms.TextInput(attrs={'class': 'form-control'}),
'region': forms.TextInput(attrs={'class': 'form-control'}),
'status': forms.Select(choices=STATUS_CHOICES, attrs={'class': 'form-control'}),
'fields_for_jobs': forms.TextInput(attrs={'class': 'form-control'}),
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Dynamically populate fields_for_jobs dropdown
self.fields['fields_for_jobs'].queryset = EmployerProfile.objects.all()
self.fields['fields_for_jobs'].empty_label = "Select a Job"
class JobSeekerProfileForm(forms.ModelForm):
class Meta:
model = JobSeekerProfile
fields = ['first_name', 'last_name', 'resume', 'skills']
widgets = {
'first_name': forms.TextInput(attrs={'class': 'form-control'}),
'last_name': forms.TextInput(attrs={'class': 'form-control'}),
'resume': forms.ClearableFileInput(attrs={'accept': '.pdf'}),
'skills': forms.Select(choices=CATEGORY_CHOICES, attrs={'class': 'form-control'})
}
class ProfileEditForm(forms.ModelForm):
class Meta:
model = CustomUser
fields = ['username', 'email']
widgets = {
'username': forms.TextInput(attrs={'class': 'form-control'}),
'email': forms.EmailInput(attrs={'class': 'form-control'}),
}
class JobSeekerRegisterForm(UserCreationForm):
first_name = forms.CharField(max_length=100)
last_name = forms.CharField(max_length=100)
email = forms.EmailField(required=True)
resume = forms.FileField(required=False, widget=forms.ClearableFileInput(attrs={'accept': '.pdf'}))
skills = forms.ChoiceField(choices=CATEGORY_CHOICES, required=False, widget=forms.Select(attrs={'class': 'form-control'}))
class Meta:
model = CustomUser
fields = ['username', 'password1', 'password2', 'first_name', 'last_name']
widgets = {
'resume': forms.ClearableFileInput(attrs={'accept': '.pdf'}), # Limit to PDF files
}
def save(self, commit=True):
user = super().save(commit=False)
user.user_type = 'job_seeker'
user.email = self.cleaned_data['email'] # Save email to user
if commit:
user.save()
JobSeekerProfile.objects.create(
user=user,
first_name=self.cleaned_data['first_name'],
last_name=self.cleaned_data['last_name'],
resume=self.cleaned_data.get('resume'),
skills=self.cleaned_data.get('skills', '')
)
return user
class EmployerRegisterForm(UserCreationForm):
business_name = forms.CharField(max_length=200)
business_type = forms.ChoiceField(choices=[('Local', 'Local'), ('Service', 'Service'), ('Online', 'Online')])
email = forms.EmailField(required=True)
business_category = forms.ChoiceField(choices=CATEGORY_CHOICES, widget=forms.Select(attrs={'class': 'form-control'}))
location = forms.CharField(max_length=200)
region = forms.CharField(max_length=100)
fields_for_jobs = forms.CharField(
required=False,
widget=forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
help_text="Enter the fields for jobs, separated by commas."
)
status = forms.ChoiceField(
choices=[('Open', 'Open'), ('Close', 'Close')],
widget=forms.Select(attrs={'class': 'form-control'}),
initial='Open'
)
class Meta:
model = CustomUser
fields = ['username', 'password1', 'password2', 'business_name', 'business_type', 'business_category', 'location', 'region', 'fields_for_jobs', 'status']
def save(self, commit=True):
user = super().save(commit=False)
user.user_type = 'employer'
user.email = self.cleaned_data['email'] # Save email to user
if commit:
user.save()
EmployerProfile.objects.create(
user=user,
business_name=self.cleaned_data['business_name'],
business_type=self.cleaned_data['business_type'],
business_category=self.cleaned_data['business_category'],
location=self.cleaned_data['location'],
region=self.cleaned_data['region'],
fields_for_jobs=self.cleaned_data.get('fields_for_jobs', ''),
status=self.cleaned_data.get('status', 'Open'),
)
return user