fix recrutement evaluateur en cours dappel
[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 6from auf.django.emploi import forms as emploi
67ad65fb 7from auf.django.emploi import models as emploi_models
240940e1 8
75f0e87b
DB
9from project.recrutement import models as recr
10
8bf241db 11########################################################################
83252c4c 12# EVALUATION
8bf241db 13########################################################################
83252c4c 14class 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
27class 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:
77880b60 60 ses_evaluateurs = [e.evaluateur for e in candidat.evaluations.all()]
940c9dd8 61 for evaluateur in self.cleaned_data.get('evaluateurs', []):
77880b60 62 if evaluateur not in anciens_evaluateurs or evaluateur not in ses_evaluateurs:
940c9dd8
OL
63 candidat_evaluation = recr.CandidatEvaluation()
64 candidat_evaluation.candidat = candidat
65 candidat_evaluation.evaluateur = evaluateur
66 candidat_evaluation.save()
540dfae4 67
83252c4c 68
8bf241db 69########################################################################
83252c4c 70# OFFRE EMPLOI
8bf241db 71########################################################################
240940e1
NBV
72class CandidatPieceForm(emploi.CandidatPieceForm):
73 pass
86caaf03 74
240940e1
NBV
75class PostulerOffreEmploiForm(emploi.PostulerOffreEmploiForm):
76 pass
ec517164 77
a084e988 78class OffreEmploiForm(ModelForm):
67ad65fb
PP
79 nom = forms.CharField(label='Intitulé du poste')
80
81 class Meta:
82 model = emploi_models.OffreEmploi
83
540dfae4
NBV
84 def clean(self):
85 cleaned_data = self.cleaned_data
86 date_limite = cleaned_data.get("date_limite")
87 debut_affectation = cleaned_data.get("debut_affectation")
88
89 if date_limite and debut_affectation:
90 if date_limite > debut_affectation:
1dd2d51f 91 raise forms.ValidationError("La date limite ne peut pas être \
a084e988 92 supérieure à la date d'affection.")
540dfae4 93 return cleaned_data
a084e988 94
8bf241db 95########################################################################
d84c3a68 96# TEMPLATE COURRIEL
8bf241db 97########################################################################
32834000
NBV
98class CandidatCourrielTemplateForm(ModelForm):
99 def get_template(self):
100 return self.data['template']
d84c3a68 101
32834000
NBV
102 class Meta:
103 model = recr.CandidatCourriel
104 fields = ('template', )
105
106class CandidatCourrielForm(ModelForm):
d84c3a68 107 def __init__(self, *args, **kwargs):
108 self.candidats = kwargs.pop('candidats')
32834000 109 self.template = kwargs.pop('template')
d84c3a68 110 super(CandidatCourrielForm, self).__init__(*args, **kwargs)
111
112 def save(self):
113 super(CandidatCourrielForm, self).save()
114
115 class Meta:
116 model = recr.CandidatCourriel
fe6fe6bb 117 fields = ('sujet', 'plain_text', )
d84c3a68 118