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