1 # -*- encoding: utf-8 -*-
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
8 ################################################################################
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
)
18 super(CandidatEvaluationForm
, self
).save()
21 fields
= ('note', 'commentaire')
22 model
= recr
.CandidatEvaluation
24 class EvaluateurForm(forms
.Form
):
25 evaluateurs
= forms
.ModelMultipleChoiceField(queryset
=
26 recr
.Evaluateur
.objects
.all(), required
=False)
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
)
38 def get_evaluateurs(self
):
39 return [e
.evaluateur
for e
in \
40 recr
.CandidatEvaluation
.objects
.filter(candidat__offre_emploi
=self
.offres_emploi
)]
43 candidats
= recr
.Candidat
.objects
.\
44 filter(offre_emploi
=self
.offres_emploi
)
46 anciens_evaluateurs
= self
.get_evaluateurs()
47 nouveaux__evaluateurs
= self
.cleaned_data
.get('evaluateurs', [])
49 # suppression des évaluations du type
50 evaluations
= recr
.CandidatEvaluation
.objects
.filter(candidat__offre_emploi
=self
.offres_emploi
)
52 if e
.evaluateur
not in nouveaux__evaluateurs
:
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()
65 ################################################################################
67 ################################################################################
68 class CandidatPieceForm(emploi
.CandidatPieceForm
):
71 class PostulerOffreEmploiForm(emploi
.PostulerOffreEmploiForm
):
74 class OffreEmploiForm(ModelForm
):
75 #poste = ModelChoiceField(queryset=rh.Poste.objects.all())
78 # model = recr.OffreEmploi
80 #def __init__(self, *args, **kwargs):
81 # super(OffreEmploiForm, self).__init__(*args, **kwargs)
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']:
94 cleaned_data
= self
.cleaned_data
95 date_limite
= cleaned_data
.get("date_limite")
96 debut_affectation
= cleaned_data
.get("debut_affectation")
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.")
104 ################################################################################
106 ################################################################################
107 class CandidatCourrielTemplateForm(ModelForm
):
108 def get_template(self
):
109 return self
.data
['template']
112 model
= recr
.CandidatCourriel
113 fields
= ('template', )
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
)
122 super(CandidatCourrielForm
, self
).save()
125 model
= recr
.CandidatCourriel
126 fields
= ('sujet', 'plain_text', )