Commit | Line | Data |
---|---|---|
83252c4c | 1 | # -*- encoding: utf-8 -*- |
2 | ||
83252c4c | 3 | from django import forms |
940c9dd8 | 4 | from django.forms import ModelForm |
75f0e87b | 5 | |
240940e1 | 6 | from auf.django.emploi import forms as emploi |
67ad65fb | 7 | from auf.django.emploi import models as emploi_models |
240940e1 | 8 | |
75f0e87b DB |
9 | from project.recrutement import models as recr |
10 | ||
8bf241db | 11 | ######################################################################## |
83252c4c | 12 | # EVALUATION |
8bf241db | 13 | ######################################################################## |
83252c4c | 14 | class CandidatEvaluationForm(ModelForm): |
15 | def __init__(self, *args, **kwargs): | |
16 | self.candidat = kwargs.pop('candidat') | |
e34a2ae0 | 17 | self.evaluateur = kwargs.pop('evaluateur') |
83252c4c | 18 | super(CandidatEvaluationForm, self).__init__(*args, **kwargs) |
19 | ||
20 | def save(self): | |
21 | super(CandidatEvaluationForm, self).save() | |
22 | ||
23 | class Meta: | |
e34a2ae0 | 24 | fields = ('note', 'commentaire') |
2b3edf33 | 25 | model = recr.CandidatEvaluation |
83252c4c | 26 | |
27 | class EvaluateurForm(forms.Form): | |
8ea41642 | 28 | evaluateurs = forms.ModelMultipleChoiceField(queryset= |
940c9dd8 OL |
29 | recr.Evaluateur.objects.all(), required=False) |
30 | ||
83252c4c | 31 | |
32 | def __init__(self, *args, **kwargs): | |
540dfae4 | 33 | self.offres_emploi = kwargs.pop('offres_emploi') |
940c9dd8 OL |
34 | evaluateurs = [e.id for e in self.get_evaluateurs()] |
35 | initial = getattr(kwargs, 'initial', {}) | |
36 | initial['evaluateurs'] = evaluateurs | |
37 | kwargs['initial'] = initial | |
83252c4c | 38 | super(EvaluateurForm, self).__init__(*args, **kwargs) |
39 | ||
940c9dd8 OL |
40 | |
41 | def get_evaluateurs(self): | |
42 | return [e.evaluateur for e in \ | |
43 | recr.CandidatEvaluation.objects.filter(candidat__offre_emploi=self.offres_emploi)] | |
44 | ||
83252c4c | 45 | def save(self): |
540dfae4 | 46 | candidats = recr.Candidat.objects.\ |
940c9dd8 OL |
47 | filter(offre_emploi=self.offres_emploi) |
48 | ||
49 | anciens_evaluateurs = self.get_evaluateurs() | |
50 | nouveaux__evaluateurs = self.cleaned_data.get('evaluateurs', []) | |
51 | ||
52 | # suppression des évaluations du type | |
53 | evaluations = recr.CandidatEvaluation.objects.filter(candidat__offre_emploi=self.offres_emploi) | |
54 | for e in evaluations: | |
55 | if e.evaluateur not in nouveaux__evaluateurs: | |
56 | e.delete() | |
57 | ||
58 | # on prépopulent les évaluations si elles ne l'ont pas déja été | |
540dfae4 | 59 | for candidat in candidats: |
940c9dd8 OL |
60 | for evaluateur in self.cleaned_data.get('evaluateurs', []): |
61 | if evaluateur not in anciens_evaluateurs: | |
62 | candidat_evaluation = recr.CandidatEvaluation() | |
63 | candidat_evaluation.candidat = candidat | |
64 | candidat_evaluation.evaluateur = evaluateur | |
65 | candidat_evaluation.save() | |
540dfae4 | 66 | |
83252c4c | 67 | |
8bf241db | 68 | ######################################################################## |
83252c4c | 69 | # OFFRE EMPLOI |
8bf241db | 70 | ######################################################################## |
240940e1 NBV |
71 | class CandidatPieceForm(emploi.CandidatPieceForm): |
72 | pass | |
86caaf03 | 73 | |
240940e1 NBV |
74 | class PostulerOffreEmploiForm(emploi.PostulerOffreEmploiForm): |
75 | pass | |
ec517164 | 76 | |
a084e988 | 77 | class OffreEmploiForm(ModelForm): |
67ad65fb PP |
78 | nom = forms.CharField(label='Intitulé du poste') |
79 | ||
80 | class Meta: | |
81 | model = emploi_models.OffreEmploi | |
82 | ||
540dfae4 NBV |
83 | def clean(self): |
84 | cleaned_data = self.cleaned_data | |
85 | date_limite = cleaned_data.get("date_limite") | |
86 | debut_affectation = cleaned_data.get("debut_affectation") | |
87 | ||
88 | if date_limite and debut_affectation: | |
89 | if date_limite > debut_affectation: | |
1dd2d51f | 90 | raise forms.ValidationError("La date limite ne peut pas être \ |
a084e988 | 91 | supérieure à la date d'affection.") |
540dfae4 | 92 | return cleaned_data |
a084e988 | 93 | |
8bf241db | 94 | ######################################################################## |
d84c3a68 | 95 | # TEMPLATE COURRIEL |
8bf241db | 96 | ######################################################################## |
32834000 NBV |
97 | class CandidatCourrielTemplateForm(ModelForm): |
98 | def get_template(self): | |
99 | return self.data['template'] | |
d84c3a68 | 100 | |
32834000 NBV |
101 | class Meta: |
102 | model = recr.CandidatCourriel | |
103 | fields = ('template', ) | |
104 | ||
105 | class CandidatCourrielForm(ModelForm): | |
d84c3a68 | 106 | def __init__(self, *args, **kwargs): |
107 | self.candidats = kwargs.pop('candidats') | |
32834000 | 108 | self.template = kwargs.pop('template') |
d84c3a68 | 109 | super(CandidatCourrielForm, self).__init__(*args, **kwargs) |
110 | ||
111 | def save(self): | |
112 | super(CandidatCourrielForm, self).save() | |
113 | ||
114 | class Meta: | |
115 | model = recr.CandidatCourriel | |
fe6fe6bb | 116 | fields = ('sujet', 'plain_text', ) |
d84c3a68 | 117 |