6f2d5d58 |
1 | # -*- encoding: utf-8 -*- |
89e948de |
2 | |
362a3534 |
3 | from django.contrib import messages |
f083eee0 |
4 | from django.contrib.auth.models import User |
89e948de |
5 | from django.core.mail import send_mail |
6 | from django.http import HttpResponse |
7 | from django.shortcuts import render_to_response, redirect, get_object_or_404 |
8 | from django.template import Context, RequestContext |
6f2d5d58 |
9 | |
362a3534 |
10 | from forms import * |
11 | from models import * |
6f2d5d58 |
12 | from project.recrutement import models as recr |
f6724c20 |
13 | from recrutement.workflow import grp_evaluateurs_recrutement |
6f2d5d58 |
14 | |
15 | def index(request): |
362a3534 |
16 | return render_to_response('recrutement/index.html', {}, |
17 | RequestContext(request)) |
18 | |
7d82fd33 |
19 | def afficher_candidat(request): |
20 | candidat = get_object_or_404(Candidat, id=request.GET.get('id')) |
73d23dcd |
21 | var = {'candidat': candidat,} |
7d82fd33 |
22 | return render_to_response("recrutement/afficher_candidat.html", var, |
23 | RequestContext(request)) |
24 | |
596fe324 |
25 | def evaluer_candidat(request): |
e34a2ae0 |
26 | candidat = get_object_or_404(Candidat, id=request.GET.get('id')) |
27 | |
28 | try: |
27c81d11 |
29 | evaluateur = Evaluateur.objects.get(user=request.user) |
30 | except Evaluateur.DoesNotExist: |
e34a2ae0 |
31 | messages.add_message(request, messages.ERROR, |
7d82fd33 |
32 | "Vous ne pouvez pas évaluer ce candidat.") |
2d083449 |
33 | return redirect("admin:recrutement_proxycandidat_changelist") |
e34a2ae0 |
34 | |
596fe324 |
35 | if request.method == "POST": |
36 | candidat_evaluation = CandidatEvaluation() |
37 | candidat_evaluation.candidat = candidat |
e34a2ae0 |
38 | candidat_evaluation.evaluateur = evaluateur |
8ea41642 |
39 | form = CandidatEvaluationForm(request.POST, |
e34a2ae0 |
40 | instance=candidat_evaluation, candidat=candidat, |
41 | evaluateur=evaluateur) |
89e948de |
42 | if form.is_valid(): |
43 | form.save() |
596fe324 |
44 | messages.add_message(request, messages.SUCCESS, |
45 | "Le commentaire et la note ont été affectés \ |
46 | au candidat.") |
89e948de |
47 | |
2d083449 |
48 | return redirect("admin:recrutement_proxycandidat_changelist") |
596fe324 |
49 | else: |
e34a2ae0 |
50 | form = CandidatEvaluationForm(candidat=candidat, evaluateur=evaluateur) |
596fe324 |
51 | |
52 | c = {'form' : form} |
beef7690 |
53 | # Voir ou rediriger |
8ea41642 |
54 | return render_to_response("recrutement/evaluer_candidat.html", Context(c), |
596fe324 |
55 | context_instance = RequestContext(request)) |
56 | |
362a3534 |
57 | def affecter_evaluateurs_candidats(request): |
58 | candidat_ids = request.GET.get('ids').split(',') |
2adf9e0c |
59 | candidats = Candidat.objects.filter(id__in=candidat_ids) |
362a3534 |
60 | if request.method == "POST": |
61 | form = EvaluateurForm(request.POST, candidats=candidats) |
62 | if form.is_valid(): |
63 | form.save() |
64 | messages.add_message(request, messages.SUCCESS, |
65 | "Les évaluateurs ont été affectés aux candidats.") |
66 | return redirect("admin:recrutement_candidat_changelist") |
67 | else: |
68 | form = EvaluateurForm(candidats=candidats) |
69 | |
70 | c = {'form' : form} |
8ea41642 |
71 | return render_to_response("recrutement/affecter_evaluateurs.html", |
72 | Context(c), context_instance = RequestContext(request)) |
73 | |
d84c3a68 |
74 | def envoyer_courriel_candidats(request): |
75 | candidat_ids = request.GET.get('ids').split(',') |
76 | candidats = Candidat.objects.filter(id__in=candidat_ids) |
4e8340cf |
77 | |
d84c3a68 |
78 | if request.method == "POST": |
79 | form = CandidatCourrielForm(request.POST, candidats=candidats) |
80 | if form.is_valid(): |
81 | form.save() |
82 | messages.add_message(request, messages.SUCCESS, |
83 | "Les évaluateurs ont été affectés aux candidats.") |
84 | return redirect("admin:recrutement_candidat_changelist") |
85 | else: |
86 | form = CandidatCourrielForm(candidats=candidats) |
87 | |
88 | c = {'form' : form} |
89 | return render_to_response("recrutement/envoyer_courriel_candidats.html", |
90 | Context(c), context_instance = RequestContext(request)) |
91 | |
8ea41642 |
92 | def postuler_appel_offre(request): |
f6749f29 |
93 | |
2b3edf33 |
94 | vars = dict() |
8ea41642 |
95 | offre_emploi = get_object_or_404(OffreEmploi, id=request.GET.get('id')) |
96 | candidat = Candidat() |
97 | candidat.offre_emploi = offre_emploi |
2b3edf33 |
98 | |
8ea41642 |
99 | if request.method == "POST": |
f6749f29 |
100 | form = PostulerOffreEmploiForm(request.POST, |
2adf9e0c |
101 | instance=candidat, offre_emploi=offre_emploi) |
102 | piecesForm = CandidatPieceForm(request.POST, request.FILES, |
103 | instance=candidat) |
f6749f29 |
104 | print form.errors |
2b3edf33 |
105 | if form.is_valid() and piecesForm.is_valid(): |
f6749f29 |
106 | offre = form.save() |
107 | piecesForm.instance = offre |
89e948de |
108 | piecesForm.save() |
8ea41642 |
109 | messages.add_message(request, messages.SUCCESS, |
110 | "Votre application à l'appel d'offre d'emploi a \ |
111 | été effectuée.") |
89e948de |
112 | |
113 | # Envoi d'un email de confirmation |
114 | send_mail(u"Confirmation de postulation pour le poste \ |
115 | de " + offre_emploi.nom, |
116 | u"Bonjour " + candidat.prenom + " " + candidat.nom + |
117 | u", \nceci est un email pour vous confirmer que votre \ |
118 | postulation pour l'offre d'emploi: " + |
119 | offre_emploi.nom + u" a été effectuée avec succès. Vous\ |
120 | devriez être contacté sous peu par l'AUF. \n\n Merci \ |
121 | pour votre intérêt envers l'AUF.", |
d84c3a68 |
122 | 'test@auf.org', |
89e948de |
123 | [candidat.email], fail_silently=False) |
124 | |
8ea41642 |
125 | return redirect("admin:recrutement_offreemploi_changelist") |
f6749f29 |
126 | else: |
127 | messages.add_message(request, messages.ERROR, |
128 | 'Il y a des erreurs dans le formulaire.') |
8ea41642 |
129 | else: |
2adf9e0c |
130 | form = PostulerOffreEmploiForm(instance=candidat, |
131 | offre_emploi=offre_emploi) |
2b3edf33 |
132 | piecesForm = CandidatPieceForm(instance=candidat) |
8ea41642 |
133 | |
2b3edf33 |
134 | vars.update(dict(form=form, candidat=candidat, piecesForm=piecesForm, )) |
135 | |
136 | return render_to_response('recrutement/postuler_appel_offre.html', vars, |
137 | RequestContext(request)) |