Filtrer les évaluations pour afficher seulement recevable et selectionné pour entrevue
[auf_rh_dae.git] / project / recrutement / forms.py
CommitLineData
83252c4c 1# -*- encoding: utf-8 -*-
2
83252c4c 3from django import forms
940c9dd8 4from django.forms import ModelForm
75f0e87b 5
240940e1
NBV
6from auf.django.emploi import forms as emploi
7
75f0e87b
DB
8from project.recrutement import models as recr
9
8bf241db 10########################################################################
83252c4c 11# EVALUATION
8bf241db 12########################################################################
83252c4c 13class 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
26class 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
70class CandidatPieceForm(emploi.CandidatPieceForm):
71 pass
86caaf03 72
240940e1
NBV
73class PostulerOffreEmploiForm(emploi.PostulerOffreEmploiForm):
74 pass
ec517164 75
a084e988 76class 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
91class 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
99class 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