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