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 | 6 | from auf.django.emploi import forms as emploi |
67ad65fb | 7 | from auf.django.emploi import models as emploi_models |
240940e1 | 8 | |
75f0e87b DB |
9 | from project.recrutement import models as recr |
10 | ||
8bf241db | 11 | ######################################################################## |
83252c4c | 12 | # EVALUATION |
8bf241db | 13 | ######################################################################## |
83252c4c | 14 | class CandidatEvaluationForm(ModelForm): |
15 | def __init__(self, *args, **kwargs): | |
16 | self.candidat = kwargs.pop('candidat') | |
e34a2ae0 | 17 | self.evaluateur = kwargs.pop('evaluateur') |
83252c4c | 18 | super(CandidatEvaluationForm, self).__init__(*args, **kwargs) |
19 | ||
20 | def save(self): | |
21 | super(CandidatEvaluationForm, self).save() | |
22 | ||
23 | class Meta: | |
e34a2ae0 | 24 | fields = ('note', 'commentaire') |
2b3edf33 | 25 | model = recr.CandidatEvaluation |
83252c4c | 26 | |
27 | class EvaluateurForm(forms.Form): | |
8ea41642 | 28 | evaluateurs = forms.ModelMultipleChoiceField(queryset= |
940c9dd8 OL |
29 | recr.Evaluateur.objects.all(), required=False) |
30 | ||
83252c4c | 31 | |
32 | def __init__(self, *args, **kwargs): | |
540dfae4 | 33 | self.offres_emploi = kwargs.pop('offres_emploi') |
940c9dd8 OL |
34 | evaluateurs = [e.id for e in self.get_evaluateurs()] |
35 | initial = getattr(kwargs, 'initial', {}) | |
36 | initial['evaluateurs'] = evaluateurs | |
37 | kwargs['initial'] = initial | |
83252c4c | 38 | super(EvaluateurForm, self).__init__(*args, **kwargs) |
39 | ||
940c9dd8 OL |
40 | |
41 | def get_evaluateurs(self): | |
42 | return [e.evaluateur for e in \ | |
43 | recr.CandidatEvaluation.objects.filter(candidat__offre_emploi=self.offres_emploi)] | |
44 | ||
83252c4c | 45 | def save(self): |
540dfae4 | 46 | candidats = recr.Candidat.objects.\ |
940c9dd8 OL |
47 | filter(offre_emploi=self.offres_emploi) |
48 | ||
49 | anciens_evaluateurs = self.get_evaluateurs() | |
50 | nouveaux__evaluateurs = self.cleaned_data.get('evaluateurs', []) | |
51 | ||
52 | # suppression des évaluations du type | |
53 | evaluations = recr.CandidatEvaluation.objects.filter(candidat__offre_emploi=self.offres_emploi) | |
54 | for e in evaluations: | |
55 | if e.evaluateur not in nouveaux__evaluateurs: | |
56 | e.delete() | |
57 | ||
58 | # on prépopulent les évaluations si elles ne l'ont pas déja été | |
540dfae4 | 59 | for candidat in candidats: |
77880b60 | 60 | ses_evaluateurs = [e.evaluateur for e in candidat.evaluations.all()] |
940c9dd8 | 61 | for evaluateur in self.cleaned_data.get('evaluateurs', []): |
77880b60 | 62 | if evaluateur not in anciens_evaluateurs or evaluateur not in ses_evaluateurs: |
940c9dd8 OL |
63 | candidat_evaluation = recr.CandidatEvaluation() |
64 | candidat_evaluation.candidat = candidat | |
65 | candidat_evaluation.evaluateur = evaluateur | |
66 | candidat_evaluation.save() | |
540dfae4 | 67 | |
83252c4c | 68 | |
8bf241db | 69 | ######################################################################## |
83252c4c | 70 | # OFFRE EMPLOI |
8bf241db | 71 | ######################################################################## |
240940e1 NBV |
72 | class CandidatPieceForm(emploi.CandidatPieceForm): |
73 | pass | |
86caaf03 | 74 | |
240940e1 NBV |
75 | class PostulerOffreEmploiForm(emploi.PostulerOffreEmploiForm): |
76 | pass | |
ec517164 | 77 | |
a084e988 | 78 | class OffreEmploiForm(ModelForm): |
67ad65fb PP |
79 | nom = forms.CharField(label='Intitulé du poste') |
80 | ||
81 | class Meta: | |
82 | model = emploi_models.OffreEmploi | |
83 | ||
540dfae4 NBV |
84 | def clean(self): |
85 | cleaned_data = self.cleaned_data | |
86 | date_limite = cleaned_data.get("date_limite") | |
87 | debut_affectation = cleaned_data.get("debut_affectation") | |
88 | ||
89 | if date_limite and debut_affectation: | |
90 | if date_limite > debut_affectation: | |
1dd2d51f | 91 | raise forms.ValidationError("La date limite ne peut pas être \ |
a084e988 | 92 | supérieure à la date d'affection.") |
540dfae4 | 93 | return cleaned_data |
a084e988 | 94 | |
8bf241db | 95 | ######################################################################## |
d84c3a68 | 96 | # TEMPLATE COURRIEL |
8bf241db | 97 | ######################################################################## |
32834000 NBV |
98 | class CandidatCourrielTemplateForm(ModelForm): |
99 | def get_template(self): | |
100 | return self.data['template'] | |
d84c3a68 | 101 | |
32834000 NBV |
102 | class Meta: |
103 | model = recr.CandidatCourriel | |
104 | fields = ('template', ) | |
105 | ||
106 | class CandidatCourrielForm(ModelForm): | |
d84c3a68 | 107 | def __init__(self, *args, **kwargs): |
108 | self.candidats = kwargs.pop('candidats') | |
32834000 | 109 | self.template = kwargs.pop('template') |
d84c3a68 | 110 | super(CandidatCourrielForm, self).__init__(*args, **kwargs) |
111 | ||
112 | def save(self): | |
113 | super(CandidatCourrielForm, self).save() | |
114 | ||
115 | class Meta: | |
116 | model = recr.CandidatCourriel | |
fe6fe6bb | 117 | fields = ('sujet', 'plain_text', ) |
d84c3a68 | 118 |