fix
[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
ec517164 5from recrutement import models as recr
240940e1
NBV
6from auf.django.emploi import forms as emploi
7
83252c4c 8################################################################################
9# EVALUATION
10################################################################################
11class CandidatEvaluationForm(ModelForm):
12 def __init__(self, *args, **kwargs):
13 self.candidat = kwargs.pop('candidat')
e34a2ae0 14 self.evaluateur = kwargs.pop('evaluateur')
83252c4c 15 super(CandidatEvaluationForm, self).__init__(*args, **kwargs)
16
17 def save(self):
18 super(CandidatEvaluationForm, self).save()
19
20 class Meta:
e34a2ae0 21 fields = ('note', 'commentaire')
2b3edf33 22 model = recr.CandidatEvaluation
83252c4c 23
24class EvaluateurForm(forms.Form):
8ea41642 25 evaluateurs = forms.ModelMultipleChoiceField(queryset=
940c9dd8
OL
26 recr.Evaluateur.objects.all(), required=False)
27
83252c4c 28
29 def __init__(self, *args, **kwargs):
540dfae4 30 self.offres_emploi = kwargs.pop('offres_emploi')
940c9dd8
OL
31 evaluateurs = [e.id for e in self.get_evaluateurs()]
32 initial = getattr(kwargs, 'initial', {})
33 initial['evaluateurs'] = evaluateurs
34 kwargs['initial'] = initial
83252c4c 35 super(EvaluateurForm, self).__init__(*args, **kwargs)
36
940c9dd8
OL
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
83252c4c 42 def save(self):
540dfae4 43 candidats = recr.Candidat.objects.\
940c9dd8
OL
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é
540dfae4 56 for candidat in candidats:
940c9dd8
OL
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()
540dfae4 63
83252c4c 64
65################################################################################
66# OFFRE EMPLOI
67################################################################################
240940e1
NBV
68class CandidatPieceForm(emploi.CandidatPieceForm):
69 pass
86caaf03 70
240940e1
NBV
71class PostulerOffreEmploiForm(emploi.PostulerOffreEmploiForm):
72 pass
ec517164 73
a084e988 74class OffreEmploiForm(ModelForm):
bddb6902
OL
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
e2968e84 92
540dfae4
NBV
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:
1dd2d51f 100 raise forms.ValidationError("La date limite ne peut pas être \
a084e988 101 supérieure à la date d'affection.")
540dfae4 102 return cleaned_data
a084e988 103
d84c3a68 104################################################################################
105# TEMPLATE COURRIEL
106################################################################################
32834000
NBV
107class CandidatCourrielTemplateForm(ModelForm):
108 def get_template(self):
109 return self.data['template']
d84c3a68 110
32834000
NBV
111 class Meta:
112 model = recr.CandidatCourriel
113 fields = ('template', )
114
115class CandidatCourrielForm(ModelForm):
d84c3a68 116 def __init__(self, *args, **kwargs):
117 self.candidats = kwargs.pop('candidats')
32834000 118 self.template = kwargs.pop('template')
d84c3a68 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
fe6fe6bb 126 fields = ('sujet', 'plain_text', )
d84c3a68 127