1 # -*- encoding: utf-8 -*
3 from datetime
import date
5 from django
.contrib
import messages
6 from django
.core
import serializers
7 from django
.http
import HttpResponse
8 from django
.shortcuts
import render_to_response
, redirect
, get_object_or_404
9 from django
.template
import RequestContext
, Template
10 from django
.utils
import simplejson
12 import datamaster_modeles
.models
as ref
14 from auf
.django
.emploi
import models
as emploi
15 from auf
.django
.emploi
import forms
as emploiForms
17 from project
.recrutement
.models
import Evaluateur
, CandidatEvaluation
, \
19 from project
.recrutement
.views
import send_templated_email
24 STATUS_ERROR_NOT_FOUND
= 404
25 STATUS_ERROR_PERMISSIONS
= 403
26 STATUS_ERROR_BADMETHOD
= 405
28 def api(request
, method
, *args
, **kwargs
):
30 # L'échange d'information doit être possible qu'avec les HOST désirés.
32 #if request.method != 'POST':
33 # return api_return(STATUS_ERROR_BADMETHOD)
36 if not hasattr(api
, 'api_%s' % method
):
37 return api_return(STATUS_ERROR
)
38 if kwargs
.has_key('offre_id'):
39 offre_id
= kwargs
['offre_id']
40 return api
.api_candidat_add(offre_id
)
42 return getattr(api
, 'api_%s' % method
)()
45 def api_return(status
, text
='', json
=False):
46 content_type
= 'text/html'
47 if status
== STATUS_OK
and json
:
48 content_type
= 'text/json'
50 if status
== STATUS_ERROR
:
52 elif status
== STATUS_ERROR_NOT_FOUND
:
53 text
= 'Resource Not Found'
54 elif status
== STATUS_ERROR_PERMISSIONS
:
55 text
= 'Invalid username or password'
56 elif status
== STATUS_ERROR_BADMETHOD
:
57 text
= 'Invalid request method'
58 elif status
== STATUS_OK
:
61 r
= HttpResponse(status
=status
, content
=text
, content_type
=content_type
)
63 if status
== STATUS_ERROR_BADMETHOD
:
70 def __init__(self
, request
):
71 self
.request
= request
73 def api_candidat_add(self
, offre_id
):
75 offre
= emploi
.OffreEmploi
.objects
.get(id=offre_id
)
77 if self
.request
.method
== "POST":
78 candidat
= emploi
.Candidat()
79 candidat
.offre_emploi
= offre
80 form
= emploiForms
.NoCaptchaPostulerOffreEmploiForm(self
.request
.POST
, instance
=candidat
)
81 piecesForm
= emploiForms
.CandidatPieceForm(self
.request
.POST
, self
.request
.FILES
, instance
=candidat
)
83 candidat
= form
.save()
85 data
= serializers
.serialize('json', [candidat
,])
86 courriel_template
= CourrielTemplate
.objects
.get(id=1)
87 send_templated_email(candidat
, courriel_template
)
88 return api_return(STATUS_OK
, data
)
90 return api_return(STATUS_ERROR
, form
.errors
)
94 def api_offre_emploi_liste(self
):
95 offres_visibles
= emploi
.OffreEmploi
.objects
.filter(est_affiche
=True, statut
="AFFI", date_limite__gte
=date
.today())
96 data
= serializers
.serialize('json', offres_visibles
)
97 return api_return(STATUS_OK
, data
);
99 def api_offre_emploi(self
):
101 id = self
.request
.GET
.get('id')
102 offre
= emploi
.OffreEmploi
.objects
.get(id=id, statut
="AFFI", date_limite__gte
=date
.today())
103 except emploi
.OffreEmploi
.DoesNotExist
:
104 return api_return(STATUS_ERROR
, "ID d'offre d'emploi invalide")
106 data
= serializers
.serialize('json', [offre
])
107 return api_return(STATUS_OK
, data
)