1 # -*- encoding: utf-8 -*-
3 from django
import forms
4 from django
.forms
import ModelForm
6 from auf
.django
.emploi
import forms
as emploi
8 from project
.recrutement
import models
as recr
10 ########################################################################
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
)
20 super(CandidatEvaluationForm
, self
).save()
23 fields
= ('note', 'commentaire')
24 model
= recr
.CandidatEvaluation
26 class EvaluateurForm(forms
.Form
):
27 evaluateurs
= forms
.ModelMultipleChoiceField(queryset
=
28 recr
.Evaluateur
.objects
.all(), required
=False)
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
)
40 def get_evaluateurs(self
):
41 return [e
.evaluateur
for e
in \
42 recr
.CandidatEvaluation
.objects
.filter(candidat__offre_emploi
=self
.offres_emploi
)]
45 candidats
= recr
.Candidat
.objects
.\
46 filter(offre_emploi
=self
.offres_emploi
)
48 anciens_evaluateurs
= self
.get_evaluateurs()
49 nouveaux__evaluateurs
= self
.cleaned_data
.get('evaluateurs', [])
51 # suppression des évaluations du type
52 evaluations
= recr
.CandidatEvaluation
.objects
.filter(candidat__offre_emploi
=self
.offres_emploi
)
54 if e
.evaluateur
not in nouveaux__evaluateurs
:
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()
67 ########################################################################
69 ########################################################################
70 class CandidatPieceForm(emploi
.CandidatPieceForm
):
73 class PostulerOffreEmploiForm(emploi
.PostulerOffreEmploiForm
):
76 class OffreEmploiForm(ModelForm
):
78 cleaned_data
= self
.cleaned_data
79 date_limite
= cleaned_data
.get("date_limite")
80 debut_affectation
= cleaned_data
.get("debut_affectation")
82 if date_limite
and debut_affectation
:
83 if date_limite
> debut_affectation
:
84 raise forms
.ValidationError("La date limite ne peut pas être \
85 supérieure à la date d'affection.")
88 ########################################################################
90 ########################################################################
91 class CandidatCourrielTemplateForm(ModelForm
):
92 def get_template(self
):
93 return self
.data
['template']
96 model
= recr
.CandidatCourriel
97 fields
= ('template', )
99 class CandidatCourrielForm(ModelForm
):
100 def __init__(self
, *args
, **kwargs
):
101 self
.candidats
= kwargs
.pop('candidats')
102 self
.template
= kwargs
.pop('template')
103 super(CandidatCourrielForm
, self
).__init__(*args
, **kwargs
)
106 super(CandidatCourrielForm
, self
).save()
109 model
= recr
.CandidatCourriel
110 fields
= ('sujet', 'plain_text', )