-from datetime import datetime
-
-from django import forms
-from django.contrib.auth import authenticate
-from django.contrib.auth.models import User
+# -*- encoding: utf-8 -*
from django.http import HttpResponse
-from django.shortcuts import render_to_response
-from django.template import loader, Context
+from django.template import Context, RequestContext, Template
+from django.shortcuts import render_to_response, redirect, get_object_or_404
from django.utils import simplejson
+from django.contrib import messages
+
from auf.django.emploi import models as emploi
+from auf.django.emploi import forms as emploiForms
STATUS_OK = 200
STATUS_ERROR_PERMISSIONS = 403
STATUS_ERROR_BADMETHOD = 405
+def api(request, method):
+ # TODO: Sécurité :
+ # L'échange d'information doit être possible qu'avec les HOST désirés.
+
+ #if request.method != 'POST':
+ # return api_return(STATUS_ERROR_BADMETHOD)
+
+ api = API(request)
+ if hasattr(api, 'api_%s' % method):
+ return getattr(api, 'api_%s' % method)()
+
+ return api_return(STATUS_ERROR)
+
def api_return(status, text='', json=False):
content_type = 'text/plain'
if status == STATUS_OK and json:
class API:
- # TODO: Sécurité :
- # L'échange d'information doit être possible qu'avec les HOST désirés.
def __init__(self, request):
self.request = request
- def candidat_add(self, candidat):
- try:
- candidat_dict = simplejson.loads(candidat)
- cand = emploi.Candidat()
- cand.offre_emploi = candidat_dict('offre_emploi')
- cand.prenom = candidat_dict('prenom')
- cand.nom = candidat_dict('nom')
- cand.genre = candidat_dict('genre')
- cand.nationalite = candidat_dict('nationalite')
- cand.situation_famille = candidat_dict('situation_famille')
- cand.nombre_dependant = candidat_dict('nombre_dependant')
- cand.niveau_diplome = candidat_dict('niveau_diplome')
- cand.employeur_actuel = candidat_dict('employeur_actuel')
- cand.poste_actuel = candidat_dict('poste_actuel')
- cand.domaine_professionnel = candidat_dict('domaine_professionnel')
- cand.telephone = candidat_dict('telephone')
- cand.email = candidat_dict('email')
- cand.adresse = candidat_dict('adresse')
- cand.ville = candidat_dict('ville')
- cand.etat_province = candidat_dict('etat_province')
- cand.code_postal = candidat_dict('code_postal')
- cand.pays = candidat_dict('pays')
- cand.save()
- except:
- return api_return(STATUS_ERROR)
- return api_return(STATUS_OK)
-
-
- def offre_emploi(self, id_offre_emploi=None):
- if id_offre_emploi is None:
- return api_return(STATUS_OK, simplejson.dumps(
+ def api_candidat_add(self):
+ vars = dict()
+ offre_emploi = get_object_or_404(emploi.OffreEmploi, id=self.request.GET.get('id'))
+ cand = emploi.Candidat()
+ cand.offre_emploi = offre_emploi
+
+ if self.request.method == "POST":
+ #import pdb;pdb.set_trace()
+ form = emploiForms.PostulerOffreEmploiForm(self.request.POST,
+ instance=cand, offre_emploi=offre_emploi)
+ piecesForm = emploiForms.CandidatPieceForm(self.request.POST, self.request.FILES,
+ instance=cand)
+ if form.is_valid() and piecesForm.is_valid():
+ offre = form.save()
+ piecesForm.instance = offre
+ piecesForm.save()
+
+ """courriel_template = CourrielTemplate.objects.\
+ get(nom_modele='Confirmation postulation (automatique)')
+ send_templated_email(candidat, courriel_template)
+ """
+ messages.add_message(self.request, messages.SUCCESS,
+ "Votre application à l'appel d'offre d'emploi a \
+ été effectuée.")
+ return api_return(STATUS_OK)
+ else:
+ messages.add_message(self.request, messages.ERROR,
+ 'Il y a des erreurs dans le formulaire.')
+ else:
+ #import pdb;pdb.set_trace()
+ form = emploiForms.PostulerOffreEmploiForm(instance=cand,
+ offre_emploi=offre_emploi)
+ piecesForm = emploiForms.CandidatPieceForm(instance=cand)
+
+ vars.update(dict(form=form, candidat=cand, piecesForm=piecesForm, ))
+
+ return render_to_response('recrutement/postuler_appel_offre.html', vars,
+ RequestContext(self.request))
+
+
+ def api_offre_emploi_liste(self):
+ return api_return(STATUS_OK, simplejson.dumps(
[{"id": "%s" % offre.id,
"nom": "%s" % offre.nom,
"resume": "%s" % offre.resume,
"debut_affectation": "%s" % offre.debut_affectation,
"lieu_affectation": "%s" % offre.lieu_affectation}
for offre in emploi.OffreEmploi.objects.all()]), json=True)
- else:
- offre = emploi.OffreEmploi.objects.get(id=id_offre_emploi)
- return api_return(STATUS_OK, simplejson.dumps(
- {"id": "%s" % offre.id,
- "nom": "%s" % offre.nom,
- "resume": "%s" % offre.resume,
- "description": "%s" % offre.description,
- "date_limite": "%s" % offre.date_limite,
- "duree_affectation": "%s" % offre.duree_affectation,
- "renumeration": "%s" % offre.renumeration,
- "debut_affectation": "%s" % offre.debut_affectation,
- "lieu_affectation": "%s" % offre.lieu_affectation}), json=True)
+
+ def api_offre_emploi(self):
+ try:
+ offre = emploi.OffreEmploi.objects.get(id=self.request.GET.get('id'))
+ except emploi.OffreEmploi.DoesNotExist:
+ return api_return(STATUS_ERROR, "ID d'offre d'emploi invalide")
+ return api_return(STATUS_OK, simplejson.dumps(
+ {"id": "%s" % offre.id,
+ "nom": "%s" % offre.nom,
+ "resume": "%s" % offre.resume,
+ "description": "%s" % offre.description,
+ "date_limite": "%s" % offre.date_limite,
+ "duree_affectation": "%s" % offre.duree_affectation,
+ "renumeration": "%s" % offre.renumeration,
+ "debut_affectation": "%s" % offre.debut_affectation,
+ "lieu_affectation": "%s" % offre.lieu_affectation}), json=True)
--- /dev/null
+# -*- encoding: utf-8 -*
+from django.shortcuts import render_to_response, redirect, get_object_or_404
+
+from django.utils import simplejson
+from auf.django.emploi import models as emploi
+from auf.django.emploi import forms as emploiForms
+from recrutement.api import API as api
+from restkit import request
+
+class API:
+ def __init__(self, request):
+ self.request = request
+
+ def offre_emploi_liste(self):
+ url = "/call/offre_emploi_liste/"
+ r = request(url)
+ liste_json = r.body_string()
+ liste_offres = simplejson.loads(liste_json)
+ obj_offres_emploi = []
+
+ for offre_dict in liste_offres:
+ offre = emploi.OffreEmploi()
+ offre.est_affiche = offre_dict['est_affiche']
+ offre.statut = offre_dict['statut']
+ offre.nom = offre_dict['nom']
+ offre.resume = offre_dict['resume']
+ offre.description = offre_dict['description']
+ offre.poste = offre_dict['poste']
+ offre.date_limite = offre_dict['date_limite']
+ offre.region = offre_dict['region']
+ offre.bureau = offre_dict['bureau']
+ offre.duree_affectation = offre_dict['duree_affectation']
+ offre.renumeration = offre_dict['renumeration']
+ offre.debut_affectation = offre_dict['debut_affectation']
+ offre.lieu_affectation = offre_dict['lieu_affectation']
+ obj_offres_emploi.append(offre)
+ return obj_offres_emploi
+
+ def offre_emploi(self, offre_id):
+ url = "/call/offre_emploi/%s"
+ r = request(url % (offre_id))
+ offre_json = r.body_string()
+ offre_dict = simplejson.loads(offre_json)
+
+ obj_offre = emploi.OffreEmploi()
+ obj_offre.est_affiche = offre_dict('est_affiche')
+ obj_offre.statut = offre_dict('statut')
+ obj_offre.nom = offre_dict('nom')
+ obj_offre.resume = offre_dict('resume')
+ obj_offre.description = offre_dict('description')
+ obj_offre.poste = offre_dict('poste')
+ obj_offre.date_limite = offre_dict('date_limite')
+ obj_offre.region = offre_dict('region')
+ obj_offre.bureau = offre_dict('bureau')
+ obj_offre.duree_affectation = offre_dict('duree_affectation')
+ obj_offre.renumeration = offre_dict('renumeration')
+ obj_offre.debut_affectation = offre_dict('debut_affectation')
+ obj_offre.lieu_affectation = offre_dict('lieu_affectation')
+ return obj_offre
+