1734: Partie-2 - utilisation du package auf.django.emploi dans le site institutionnel
authorNilovna Bascunan-Vasquez <contact@nilovna.com>
Tue, 26 Jul 2011 14:31:09 +0000 (10:31 -0400)
committerNilovna Bascunan-Vasquez <contact@nilovna.com>
Tue, 26 Jul 2011 14:31:09 +0000 (10:31 -0400)
project/recrutement/admin.py
project/recrutement/api.py
src/auf.django.emploi/auf/django/emploi/api.py

index c7a54a0..45e7fa0 100644 (file)
@@ -38,7 +38,8 @@ class OffreEmploiAdmin(VersionAdmin):
         qs = self.model._default_manager.get_query_set()
         # Si user est superuser afficher toutes les offres d'emploi  
         user_groupes = request.user.groups.all()
-        if not grp_drh_recrutement in user_groupes:
+        if not grp_drh_recrutement in user_groupes and \
+            not request.user.is_superuser:
             """
             Si le user n'est ni un évaluateur ni un administrateur régional,
             retourner none
@@ -72,7 +73,8 @@ class OffreEmploiAdmin(VersionAdmin):
     def has_change_permission(self, request, obj=None):
         user_groupes = request.user.groups.all()
         if grp_drh_recrutement in user_groupes or \
-            grp_administrateurs_recrutement in user_groupes:
+            grp_administrateurs_recrutement in user_groupes or \
+            request.user.is_superuser:
             return True
         return False   
 
@@ -107,7 +109,8 @@ class ProxyOffreEmploiAdmin(OffreEmploiAdmin):
     def has_change_permission(self, request, obj=None):
         user_groupes = request.user.groups.all()
         if grp_evaluateurs_recrutement in user_groupes or \
-            grp_drh_recrutement in user_groupes:
+            grp_drh_recrutement in user_groupes or \
+            request.user.is_superuser:
             return True
         return False   
 
@@ -230,7 +233,8 @@ class CandidatAdmin(VersionAdmin):
     def add_delete_permission(self, request, obj=None) :
         user_groupes = request.user.groups.all()
         if grp_drh_recrutement in user_groupes or \
-            grp_administrateurs_recrutement in user_groupes:
+            grp_administrateurs_recrutement in user_groupes or \
+            request.user.is_superuser:
             return True
         return False    
 
@@ -243,11 +247,12 @@ class CandidatAdmin(VersionAdmin):
     def has_change_permission(self, request, obj=None):
         user_groupes = request.user.groups.all()
         if grp_drh_recrutement in user_groupes or \
-            grp_administrateurs_recrutement in user_groupes:
+            grp_administrateurs_recrutement in user_groupes or \
+            request.user.is_superuser:
             return True
         return False   
 
-    def queryset(self, obj):
+    def queryset(self, request):
         """
         Spécifie un queryset limité, autrement Django exécute un 
         select_related() sans paramètre, ce qui a pour effet de charger tous 
@@ -258,8 +263,9 @@ class CandidatAdmin(VersionAdmin):
         """
         qs = self.model._default_manager.get_query_set() 
         # Si user est superuser afficher tous les candidats       
-        user_groupes = obj.user.groups.all()
-        if not grp_drh_recrutement in user_groupes:
+        user_groupes = request.user.groups.all()
+        if not grp_drh_recrutement in user_groupes and \
+            not request.user.is_superuser:
             # Si le user n'est ni un évaluateur ni un administrateur régional,
             # retourner none
 
@@ -318,7 +324,8 @@ class ProxyCandidatAdmin(CandidatAdmin):
         user_groupes = request.user.groups.all()
         if grp_drh_recrutement in user_groupes or \
             grp_administrateurs_recrutement in user_groupes or \
-            grp_evaluateurs_recrutement in user_groupes:
+            grp_evaluateurs_recrutement in user_groupes or \
+            request.user.is_superuser:
             return True
         return False   
 
@@ -422,7 +429,8 @@ class CandidatEvaluationAdmin(VersionAdmin):
         """
         qs = self.model._default_manager.get_query_set()
         user_groupes = request.user.groups.all()
-        if grp_drh_recrutement in user_groupes:
+        if grp_drh_recrutement in user_groupes  or \
+            request.user.is_superuser:
             return qs.select_related('offre_emploi')
 
         try:
index 655f22f..f8de70a 100644 (file)
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*
 from django.http import HttpResponse
-from django.template import Context, RequestContext, Template
+from django.template import RequestContext, Template
 from django.shortcuts import render_to_response, redirect, get_object_or_404
 from django.utils import simplejson
 from django.contrib import messages
@@ -23,14 +23,13 @@ def api(request, method):
     #    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'
+    content_type = 'text/html'
     if status == STATUS_OK and json:
         content_type = 'text/json'
     if text is None:
@@ -66,20 +65,17 @@ class API:
         if self.request.method == "POST":
             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():
+            #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() 
+                #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,
@@ -87,9 +83,9 @@ class API:
         else:
             form = emploiForms.PostulerOffreEmploiForm(instance=cand,
                     offre_emploi=offre_emploi)
-            piecesForm = emploiForms.CandidatPieceForm(instance=cand)
+            #piecesForm = emploiForms.CandidatPieceForm(instance=cand)
 
-        vars.update(dict(form=form, candidat=cand, piecesForm=piecesForm, ))
+        vars.update(dict(form=form, candidat=cand, ))#piecesForm=piecesForm, ))
      
         return render_to_response('recrutement/postuler_appel_offre.html', vars, 
                 RequestContext(self.request))
@@ -101,11 +97,13 @@ class API:
                             "nom": "%s" % offre.nom, 
                             "resume": "%s" % offre.resume,
                             "description": "%s" % offre.description,
+                            "region": "%s" % offre.region.id,
+                            "bureau": "%s" % offre.bureau.id,
                             "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} 
+                            "lieu_affectation": "%s" % offre.lieu_affectation.id} 
                             for offre in emploi.OffreEmploi.objects.all()]), json=True)
         
     def api_offre_emploi(self):
@@ -118,9 +116,11 @@ class API:
             "nom": "%s" % offre.nom, 
             "resume": "%s" % offre.resume,
             "description": "%s" % offre.description,
+            "region": "%s" % offre.region.id,
+            "bureau": "%s" % offre.bureau.id,
             "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)
+            "lieu_affectation": "%s" % offre.lieu_affectation.id} ), json=True)
 
index a9478de..fdd97b5 100644 (file)
@@ -1,10 +1,12 @@
 # -*- encoding: utf-8 -*
 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
+import datamaster_modeles.models as ref
 
 class API:
     def __init__(self, request):
@@ -25,35 +27,42 @@ class API:
             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.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 = offre_dict['lieu_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 = "/call/offre_emploi/%s"
+        url = "http://127.0.0.1:8080/api/offre_emploi/?id=%s"
         r = req(url % (offre_id))
         offre_json = r.body_string()
         offre_dict = simplejson.loads(offre_json)
+        obj_offres_emploi = []
 
-        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')
+        offre = emploi.OffreEmploi()
+        #obj_offre.est_affiche = offre_dict('est_affiche')
+        #obj_offre.statut = offre_dict('statut')
+        offre.nom = offre_dict['nom']
+        offre.resume = offre_dict['resume']
+        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
+        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:8080/api/candidat_add/?id=%s" % (offre_id)
+        return redirect(url)
 
+