release 0.5 emploi
[auf_django_emploi.git] / auf / django / emploi / api.py
index a9478de..edbced4 100644 (file)
@@ -1,59 +1,58 @@
 # -*- 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