Skip to content
Snippets Groups Projects
Select Git revision
  • master
1 result

index.html

Blame
  • 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