X-Git-Url: http://git.auf.org/?p=auf_django_emploi.git;a=blobdiff_plain;f=auf%2Fdjango%2Femploi%2Fapi.py;h=9b368c744cc38a05318863db2272c7c4bec386b9;hp=5a7e778d07ae39d784c322dc087e56664f83c36c;hb=c3add7d350bcfb786cc53477536427dae02a4c95;hpb=44accb6df874633e45340501cc9dd93f3bfabf77 diff --git a/auf/django/emploi/api.py b/auf/django/emploi/api.py index 5a7e778..9b368c7 100644 --- a/auf/django/emploi/api.py +++ b/auf/django/emploi/api.py @@ -1,68 +1,59 @@ # -*- encoding: utf-8 -* +from django.core import serializers from django.shortcuts import render_to_response, redirect, get_object_or_404 from django.template import Context, RequestContext - from django.utils import simplejson from auf.django.emploi import models as emploi -from auf.django.emploi import forms as emploiForms -from restkit import request as req +from restkit import request, Resource import datamaster_modeles.models as ref +import poster +import urllib2 +from auf.django.emploi import settings + + +STATUS_OK = 200 + +def req(*args, **kwargs): + timeout = 10 + if not kwargs.has_key('timeout'): + kwargs['timeout'] = timeout + return request(*args, **kwargs) class API: - def __init__(self, request): + def __init__(self, request, env): self.request = request + self.env = env - def offre_emploi_liste(self): - url = "http://127.0.0.1:8000/api/offre_emploi_liste/" + def offre_emploi_liste(self,): + url = settings.RECRUTEMENT_URLS[self.env] + "offre_emploi_liste/" r = req(url) - liste_json = r.body_string() - liste_offres = simplejson.loads(liste_json) - obj_offres_emploi = [] + data = r.body_string() + offres = [offre.object for offre in serializers.deserialize("json", data)] + return offres - 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_nom = offre_dict['poste_nom'] - offre.date_limite = offre_dict['date_limite'] - offre.region = ref.Region.objects.get(id=offre_dict['region']) - offre.bureau = ref.Bureau.objects.get(id=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 = ref.Implantation.objects.get(id=offre_dict['lieu_affectation']) - obj_offres_emploi.append(offre) - return obj_offres_emploi - - def offre_emploi(self, offre_id): - url = "http://127.0.0.1:8000/api/offre_emploi/?id=%s" - r = req(url % (offre_id)) + def offre_emploi(self, offre_id, env): + url = settings.RECRUTEMENT_URLS[self.env] + "offre_emploi/?id=%s" + r = req(url % offre_id) offre_json = r.body_string() - offre_dict = simplejson.loads(offre_json) - obj_offres_emploi = [] - - 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_nom = offre_dict['poste_nom'] - offre.date_limite = offre_dict['date_limite'] - offre.region = ref.Region.objects.get(id=offre_dict['region']) - offre.bureau = ref.Bureau.objects.get(id=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 = ref.Implantation.objects.get(id=offre_dict['lieu_affectation']) - obj_offres_emploi.append(offre) - return obj_offres_emploi - - def candidat_add(self, offre_id): - url = "http://127.0.0.1:8000/api/candidat_add/?id=%s" % (offre_id) - return redirect(url) - - + data = r.body_string() + offres = [o.object for o in serializers.deserialize("json", data)] + if len(offres) == 0: + return offres[0] + else: + return offres + + def candidat_add(self, offre_id,): + url = settings.RECRUTEMENT_URLS[self.env] + "candidat_add/%s/" % offre_id + r = Resource(url) + params = self.request.POST + for k, up_file in self.request.FILES.items(): + params[k] = up_file + opener = poster.streaminghttp.register_openers() + datagen, headers = poster.encode.multipart_encode(params) + request = urllib2.Request(url, datagen, headers) + resp = urllib2.urlopen(request) + if resp.code == STATUS_OK: + candidats = [c.object for c in serializers.deserialize("json", resp.read())] + if len(candidats) == 1: + return candidats[0] + return None