Initial commit
This commit is contained in:
50
apps/careers/forms.py
Normal file
50
apps/careers/forms.py
Normal file
@@ -0,0 +1,50 @@
|
||||
from django import forms
|
||||
from django.core.validators import FileExtensionValidator
|
||||
from .models import JobApplication
|
||||
|
||||
|
||||
class JobApplicationForm(forms.ModelForm):
|
||||
cv_file = forms.FileField(
|
||||
validators=[FileExtensionValidator(allowed_extensions=['pdf', 'doc', 'docx'])],
|
||||
widget=forms.ClearableFileInput(attrs={
|
||||
'accept': '.pdf,.doc,.docx',
|
||||
'class': 'form-file-input',
|
||||
}),
|
||||
label='CV (PDF ou Word)',
|
||||
help_text='Formats acceptés : PDF, DOC, DOCX — taille maximum 5 Mo',
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = JobApplication
|
||||
fields = [
|
||||
'first_name', 'last_name', 'email', 'phone',
|
||||
'linkedin_url', 'cover_letter', 'cv_file', 'portfolio_url',
|
||||
]
|
||||
labels = {
|
||||
'first_name': 'Prénom',
|
||||
'last_name': 'Nom de famille',
|
||||
'email': 'Adresse email',
|
||||
'phone': 'Téléphone (optionnel)',
|
||||
'linkedin_url': 'LinkedIn (optionnel)',
|
||||
'cover_letter': 'Lettre de motivation',
|
||||
'portfolio_url': 'Portfolio / GitHub (optionnel)',
|
||||
}
|
||||
widgets = {
|
||||
'first_name': forms.TextInput(attrs={'placeholder': 'Votre prénom', 'class': 'form-input'}),
|
||||
'last_name': forms.TextInput(attrs={'placeholder': 'Votre nom', 'class': 'form-input'}),
|
||||
'email': forms.EmailInput(attrs={'placeholder': 'vous@exemple.com', 'class': 'form-input'}),
|
||||
'phone': forms.TextInput(attrs={'placeholder': '+225 07 00 00 00 00', 'class': 'form-input'}),
|
||||
'linkedin_url': forms.URLInput(attrs={'placeholder': 'https://linkedin.com/in/...', 'class': 'form-input'}),
|
||||
'cover_letter': forms.Textarea(attrs={
|
||||
'rows': 8,
|
||||
'class': 'form-textarea',
|
||||
'placeholder': 'Décrivez votre motivation et vos atouts pour ce poste...',
|
||||
}),
|
||||
'portfolio_url': forms.URLInput(attrs={'placeholder': 'https://github.com/...', 'class': 'form-input'}),
|
||||
}
|
||||
|
||||
def clean_cv_file(self):
|
||||
cv = self.cleaned_data.get('cv_file')
|
||||
if cv and cv.size > 5 * 1024 * 1024:
|
||||
raise forms.ValidationError('Le fichier CV ne peut pas dépasser 5 Mo.')
|
||||
return cv
|
||||
Reference in New Issue
Block a user