# -*- 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:8080/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 = []
-
- 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
+ data = r.body_string()
+ offres = [offre.object for offre in serializers.deserialize("json", data)]
+ return offres
def offre_emploi(self, offre_id):
- url = "/call/offre_emploi/%s"
- r = req(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
+ url = settings.RECRUTEMENT_URLS[self.env] + "offre_emploi/?id=%s"
+ r = req(url % offre_id)
+ 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