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
):
77 #poste = ModelChoiceField(queryset=rh.Poste.objects.all())
80 # model = recr.OffreEmploi
82 #def __init__(self, *args, **kwargs):
83 # super(OffreEmploiForm, self).__init__(*args, **kwargs)
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']:
96 cleaned_data
= self
.cleaned_data
97 date_limite
= cleaned_data
.get("date_limite")
98 debut_affectation
= cleaned_data
.get("debut_affectation")
100 if date_limite
and debut_affectation
:
101 if date_limite
> debut_affectation
:
102 raise forms
.ValidationError("La date limite ne peut pas être \
103 supérieure à la date d'affection.")
106 ################################################################################
108 ################################################################################
109 class CandidatCourrielTemplateForm(ModelForm
):
110 def get_template(self
):
111 return self
.data
['template']
114 model
= recr
.CandidatCourriel
115 fields
= ('template', )
117 class CandidatCourrielForm(ModelForm
):
118 def __init__(self
, *args
, **kwargs
):
119 self
.candidats
= kwargs
.pop('candidats')
120 self
.template
= kwargs
.pop('template')
121 super(CandidatCourrielForm
, self
).__init__(*args
, **kwargs
)
124 super(CandidatCourrielForm
, self
).save()
127 model
= recr
.CandidatCourriel
128 fields
= ('sujet', 'plain_text', )