Commit | Line | Data |
---|---|---|
83252c4c | 1 | # -*- encoding: utf-8 -*- |
2 | ||
83252c4c | 3 | from django import forms |
940c9dd8 | 4 | from django.forms import ModelForm |
75f0e87b | 5 | |
240940e1 NBV |
6 | from auf.django.emploi import forms as emploi |
7 | ||
75f0e87b DB |
8 | from project.recrutement import models as recr |
9 | ||
83252c4c | 10 | ################################################################################ |
11 | # EVALUATION | |
12 | ################################################################################ | |
13 | class 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 | |
26 | class 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 |
70 | class CandidatPieceForm(emploi.CandidatPieceForm): |
71 | pass | |
86caaf03 | 72 | |
240940e1 NBV |
73 | class PostulerOffreEmploiForm(emploi.PostulerOffreEmploiForm): |
74 | pass | |
ec517164 | 75 | |
a084e988 | 76 | class 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 |
109 | class 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 | ||
117 | class 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 |