1816: Avoir le poste dans le modèle offre d'emploi sans créer de dépendance à rh...
authorNilovna Bascunan-Vasquez <contact@nilovna.com>
Tue, 2 Aug 2011 15:25:00 +0000 (11:25 -0400)
committerNilovna Bascunan-Vasquez <contact@nilovna.com>
Tue, 2 Aug 2011 15:25:00 +0000 (11:25 -0400)
project/recrutement/admin.py
project/recrutement/api.py
project/recrutement/forms.py
project/recrutement/models.py
src/auf.django.emploi/auf/django/emploi/api.py
src/auf.django.emploi/auf/django/emploi/models.py

index e0e435f..b817bd5 100644 (file)
@@ -10,6 +10,7 @@ from reversion.admin import VersionAdmin
 from datamaster_modeles.models import Employe, Implantation, Region
 from django.forms.models import BaseInlineFormSet
 
+from project.rh import models as rh
 from recrutement.models import *
 from recrutement.workflow import grp_administrateurs_recrutement,\
                             grp_evaluateurs_recrutement, grp_drh_recrutement
@@ -39,7 +40,8 @@ class EvaluateurInline(admin.TabularInline):
 class OffreEmploiAdmin(VersionAdmin):
     date_hierarchy = 'date_creation'
     list_display = ('nom', 'resume', 'date_limite', 'region',  'statut', 
-                    'est_affiche', '_candidatsList')
+                    'est_affiche', '_candidatsList', )
+    exclude = ('poste_nom',)
     list_filter = ('statut', 'est_affiche', )
     actions = ['affecter_evaluateurs_offre_emploi', ]
     form = OffreEmploiForm
@@ -65,7 +67,6 @@ class OffreEmploiAdmin(VersionAdmin):
     _candidatsList.allow_tags = True 
     _candidatsList.short_description = "Afficher la liste des candidats"
 
-
     def queryset(self, request):
         qs = self.model._default_manager.get_query_set()
         # Si user est superuser afficher toutes les offres d'emploi  
index 631f710..e8ca95a 100644 (file)
@@ -110,7 +110,7 @@ class API:
                             "nom": "%s" % offre.nom, 
                             "resume": "%s" % offre.resume,
                             "description": "%s" % offre.description,
-                            # "poste": "%s [%s]" % 
+                            "poste_nom": "%s" % offre.poste_nom,
                             "region": "%s" % offre.region.id,
                             "bureau": "%s" % offre.bureau.id,
                             "date_limite": "%s" % offre.date_limite,
@@ -132,6 +132,7 @@ class API:
             "nom": "%s" % offre.nom, 
             "resume": "%s" % offre.resume,
             "description": "%s" % offre.description,
+            "poste_nom": "%s" % offre.poste_nom,
             "region": "%s" % offre.region.id,
             "bureau": "%s" % offre.bureau.id,
             "date_limite": "%s" % offre.date_limite,
index 2392045..2c54120 100644 (file)
@@ -8,7 +8,7 @@ from datetime import timedelta
 from django.forms.widgets import CheckboxSelectMultiple
 from django.contrib.admin import widgets as admin_widgets   
 from form_utils.forms import BetterModelForm
-from django.forms import ModelForm
+from django.forms import ModelForm, ModelChoiceField, HiddenInput, CharField
 from django.forms.models import BaseInlineFormSet 
 from django.core.mail import send_mail
 
@@ -17,6 +17,7 @@ from captcha.fields import CaptchaField
 
 from recrutement import models as recr
 from auf.django.emploi import forms as emploi
+from project.rh import models as rh
 
 ################################################################################
 # EVALUATION
@@ -63,9 +64,21 @@ class PostulerOffreEmploiForm(emploi.PostulerOffreEmploiForm):
     pass
 
 class OffreEmploiForm(ModelForm):
+    poste = ModelChoiceField(queryset=rh.Poste.objects.all())
+
     class Meta:
         model = recr.OffreEmploi  
 
+    def save(self, *args, **kwargs):
+        kwargs2 = kwargs.copy()
+        kwargs2['commit'] = False
+        offre = super(OffreEmploiForm, self).save(*args, **kwargs2)
+        offre.poste = self.cleaned_data.get("poste")
+        offre.poste_nom = self.cleaned_data.get("poste").nom
+        if 'commit' not in kwargs or kwargs['commit']:
+            offre.save()
+        return offre
+
     def clean(self):
         cleaned_data = self.cleaned_data
         date_limite = cleaned_data.get("date_limite")
@@ -76,6 +89,11 @@ class OffreEmploiForm(ModelForm):
                 raise forms.ValidationError("La date limite ne peut pas être \
                         supérieure à la date d'affection.")
 
+        """if date_limite < datetime.date.today() or \
+            debut_affectation < datetime.date.today():
+            raise forms.ValidationError("La date limite et/ou la date \
+                d'affection doivent être supérieures à la date d'aujourdhui.")
+        """
         return cleaned_data
 
 ################################################################################
index 898197d..3b30f2b 100755 (executable)
@@ -8,7 +8,6 @@ from django.db import models
 import settings
 
 import datamaster_modeles.models as ref
-from project.rh.models import Poste 
 from recrutement.workflow import grp_evaluateurs_recrutement
 from auf.django.emploi import models as emploi
 from auf.django.emploi.models import TYPE_PIECE_CHOICES
@@ -53,6 +52,7 @@ class OffreEmploi(emploi.OffreEmploi):
     class Meta:
         proxy = True
 
+
 class CandidatPiece(emploi.CandidatPiece):
     class Meta:
         proxy = True
@@ -63,13 +63,6 @@ class OffreEmploiManager(models.Manager):
         return super(OffreEmploiManager, self).get_query_set().\
                     select_related(*fkeys).all()
 
-class ProxyPoste(Poste):
-    class Meta:
-        proxy = True
-
-    def __unicode__(self):
-        return '%s [%s]' % (self.nom, self.id)
-
 class ProxyOffreEmploi(emploi.OffreEmploi):
     class Meta:
         proxy = True
index 0f11e85..5a7e778 100644 (file)
@@ -26,7 +26,7 @@ class API:
             offre.nom = offre_dict['nom']
             offre.resume = offre_dict['resume']
             offre.description = offre_dict['description']
-            #offre.poste = offre_dict['poste']
+            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'])
@@ -50,7 +50,7 @@ class API:
         offre.nom = offre_dict['nom']
         offre.resume = offre_dict['resume']
         offre.description = offre_dict['description']
-        #obj_offre.poste = offre_dict('poste')
+        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'])
index 6192aa9..8fa2e92 100755 (executable)
@@ -75,9 +75,8 @@ class OffreEmploi(Metadata):
     nom = models.CharField(max_length=255)
     resume = models.TextField(verbose_name="Résumé")
     description = models.TextField()
-    #poste_id = models.IntegerField(verbose_name="Nombre de dépendant")
-    #poste_nom = models.CharField(max_length=255, verbose_name="Nom du poste")
-    #poste = models.ForeignKey('rh.Poste', db_column='poste')
+    poste = models.CharField(max_length=255)
+    poste_nom = models.CharField(max_length=255)
     date_limite = models.DateField(verbose_name="Date limite",
                         help_text=HELP_TEXT_FORMAT_DATE,)  
     region = models.ForeignKey(ref.Region, db_column='region',