import avec project.
[auf_rh_dae.git] / project / recrutement / forms.py
1 # -*- encoding: utf-8 -*-
2
3 from django import forms
4 from django.forms import ModelForm
5
6 from auf.django.emploi import forms as emploi
7
8 from project.recrutement import models as recr
9
10 ################################################################################
11 # EVALUATION
12 ################################################################################
13 class CandidatEvaluationForm(ModelForm):
14 def __init__(self, *args, **kwargs):
15 self.candidat = kwargs.pop('candidat')
16 self.evaluateur = kwargs.pop('evaluateur')
17 super(CandidatEvaluationForm, self).__init__(*args, **kwargs)
18
19 def save(self):
20 super(CandidatEvaluationForm, self).save()
21
22 class Meta:
23 fields = ('note', 'commentaire')
24 model = recr.CandidatEvaluation
25
26 class EvaluateurForm(forms.Form):
27 evaluateurs = forms.ModelMultipleChoiceField(queryset=
28 recr.Evaluateur.objects.all(), required=False)
29
30
31 def __init__(self, *args, **kwargs):
32 self.offres_emploi = kwargs.pop('offres_emploi')
33 evaluateurs = [e.id for e in self.get_evaluateurs()]
34 initial = getattr(kwargs, 'initial', {})
35 initial['evaluateurs'] = evaluateurs
36 kwargs['initial'] = initial
37 super(EvaluateurForm, self).__init__(*args, **kwargs)
38
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
44 def save(self):
45 candidats = recr.Candidat.objects.\
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é
58 for candidat in candidats:
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()
65
66
67 ################################################################################
68 # OFFRE EMPLOI
69 ################################################################################
70 class CandidatPieceForm(emploi.CandidatPieceForm):
71 pass
72
73 class PostulerOffreEmploiForm(emploi.PostulerOffreEmploiForm):
74 pass
75
76 class OffreEmploiForm(ModelForm):
77 #poste = ModelChoiceField(queryset=rh.Poste.objects.all())
78
79 #class Meta:
80 # model = recr.OffreEmploi
81
82 #def __init__(self, *args, **kwargs):
83 # super(OffreEmploiForm, self).__init__(*args, **kwargs)
84 #
85 #def save(self, *args, **kwargs):
86 # kwargs2 = kwargs.copy()
87 # kwargs2['commit'] = False
88 # offre = super(OffreEmploiForm, self).save(*args, **kwargs2)
89 # offre.poste = self.cleaned_data.get("poste").id
90 # offre.poste_nom = self.cleaned_data.get("poste").nom
91 # if 'commit' not in kwargs or kwargs['commit']:
92 # offre.save()
93 # return offre
94
95 def clean(self):
96 cleaned_data = self.cleaned_data
97 date_limite = cleaned_data.get("date_limite")
98 debut_affectation = cleaned_data.get("debut_affectation")
99
100 if date_limite and debut_affectation:
101 if date_limite > debut_affectation:
102 raise forms.ValidationError("La date limite ne peut pas être \
103 supérieure à la date d'affection.")
104 return cleaned_data
105
106 ################################################################################
107 # TEMPLATE COURRIEL
108 ################################################################################
109 class CandidatCourrielTemplateForm(ModelForm):
110 def get_template(self):
111 return self.data['template']
112
113 class Meta:
114 model = recr.CandidatCourriel
115 fields = ('template', )
116
117 class CandidatCourrielForm(ModelForm):
118 def __init__(self, *args, **kwargs):
119 self.candidats = kwargs.pop('candidats')
120 self.template = kwargs.pop('template')
121 super(CandidatCourrielForm, self).__init__(*args, **kwargs)
122
123 def save(self):
124 super(CandidatCourrielForm, self).save()
125
126 class Meta:
127 model = recr.CandidatCourriel
128 fields = ('sujet', 'plain_text', )
129