redirect_interdiction niveau project
[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
83252c4c 10################################################################################
11# EVALUATION
12################################################################################
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
67################################################################################
68# OFFRE EMPLOI
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):
bddb6902
OL
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
e2968e84 94
540dfae4
NBV
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:
1dd2d51f 102 raise forms.ValidationError("La date limite ne peut pas être \
a084e988 103 supérieure à la date d'affection.")
540dfae4 104 return cleaned_data
a084e988 105
d84c3a68 106################################################################################
107# TEMPLATE COURRIEL
108################################################################################
32834000
NBV
109class CandidatCourrielTemplateForm(ModelForm):
110 def get_template(self):
111 return self.data['template']
d84c3a68 112
32834000
NBV
113 class Meta:
114 model = recr.CandidatCourriel
115 fields = ('template', )
116
117class CandidatCourrielForm(ModelForm):
d84c3a68 118 def __init__(self, *args, **kwargs):
119 self.candidats = kwargs.pop('candidats')
32834000 120 self.template = kwargs.pop('template')
d84c3a68 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
fe6fe6bb 128 fields = ('sujet', 'plain_text', )
d84c3a68 129