Commit | Line | Data |
---|---|---|
83252c4c | 1 | # -*- encoding: utf-8 -*- |
2 | ||
83252c4c | 3 | from django import forms |
940c9dd8 | 4 | from django.forms import ModelForm |
ec517164 | 5 | from recrutement import models as recr |
240940e1 NBV |
6 | from auf.django.emploi import forms as emploi |
7 | ||
83252c4c | 8 | ################################################################################ |
9 | # EVALUATION | |
10 | ################################################################################ | |
11 | class 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 | |
24 | class 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 |
68 | class CandidatPieceForm(emploi.CandidatPieceForm): |
69 | pass | |
86caaf03 | 70 | |
240940e1 NBV |
71 | class PostulerOffreEmploiForm(emploi.PostulerOffreEmploiForm): |
72 | pass | |
ec517164 | 73 | |
a084e988 | 74 | class 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 |
107 | class 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 | ||
115 | class 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 | |
32834000 | 126 | fields = ('sujet', 'plain_text', 'html') |
d84c3a68 | 127 |