recherche postem
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 31 Jul 2012 20:05:54 +0000 (16:05 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 31 Jul 2012 20:05:54 +0000 (16:05 -0400)
project/dae/forms.py
project/dae/templates/dae/embauche-choisir-poste.html

index 28de814..2aba3d5 100644 (file)
@@ -3,7 +3,7 @@
 from django import forms
 from django.forms.models import BaseInlineFormSet
 from django.contrib.admin import widgets as admin_widgets
-from django.db.models import Q, Max
+from django.db.models import Q, Max, Count
 from django.forms.models import inlineformset_factory, modelformset_factory
 
 from ajax_select.fields import AutoCompleteSelectField
@@ -14,7 +14,7 @@ from auf.django.workflow.forms import WorkflowFormMixin
 from project import groups
 from project.rh import models as rh
 from project.dae import models as dae
-from project.dae.workflow import POSTE_ETATS_BOUTONS
+from project.dae.workflow import POSTE_ETATS_BOUTONS, POSTE_ETAT_FINALISE
 
 
 class BaseInlineFormSetWithInitial(BaseInlineFormSet):
@@ -177,13 +177,13 @@ def label_poste_display(poste):
         annee = poste.date_debut.year
 
     nom = poste.nom
-    
-    try:
-        label = u"%s %s - %s [%s]" % (
-            annee, nom, poste.type_poste.categorie_emploi.nom, poste.id
+    label = u"%s (%s) %s - %s [%s]" % (
+        annee,
+        poste.implantation.nom_court,
+        nom,
+        poste.type_poste.categorie_emploi.nom,
+        poste.id,
         )
-    except:
-        label = unicode(poste)
     return label
 
 
@@ -386,28 +386,37 @@ class PosteForm(forms.ModelForm):
         return cleaned_data
 
 
-class ChoosePosteForm(forms.ModelForm):
+class ChoosePosteForm(forms.Form):
     class Meta:
-        model = dae.Poste
         fields = ('poste',)
 
     # La liste des choix est laissée vide. Voir PosteForm.__init__.
-    poste = forms.ChoiceField(choices=(), required=False)
+    postes_dae = forms.ChoiceField(choices=(), required=False)
+    postes_rh = forms.ChoiceField(choices=(), required=False)
 
     def __init__(self, request=None, *args, **kwargs):
         super(ChoosePosteForm, self).__init__(*args, **kwargs)
-        self.fields['poste'].choices = self._poste_choices(request)
+        self.fields['postes_dae'].choices = self._poste_dae_choices(request)
+        self.fields['postes_rh'].choices = self._poste_rh_choices(request)
 
-    def _poste_choices(self, request):
-        """ Menu déroulant pour les postes. """
-        dae_ = dae.Poste.objects.ma_region_ou_service(request.user) \
-                .filter(id_rh__isnull=True)
-        copies = dae.Poste.objects.ma_region_ou_service(request.user) \
-                .exclude(id_rh__isnull=True)
+    def _poste_dae_choices(self, request):
+        """ Menu déroulant pour les postes."""
+        postes_dae = dae.Poste.objects.ma_region_ou_service(request.user) \
+                .exclude(etat__in=(POSTE_ETAT_FINALISE, )) \
+                .annotate(num_dae=Count('dae_dossiers')) \
+                .filter(num_dae=0) \
+                .order_by('-date_debut')
 
         return [('', '----------')] + \
-               sorted([('dae-%s' % p.id, unicode(p)) for p in dae_ | copies],
-                      key=lambda t: t[1])
+               [('dae-%s' % p.id, label_poste_display(p)) for p in postes_dae]
+
+    def _poste_rh_choices(self, request):
+        """ Menu déroulant pour les postes."""
+        postes_rh = rh.Poste.objects.ma_region_ou_service(request.user) \
+                .order_by('-date_debut')
+
+        return [('', '----------')] + \
+               [('rh-%s' % p.id, label_poste_display(p)) for p in postes_rh]
 
 
 class EmployeForm(forms.ModelForm):
index fa5df7d..3859564 100644 (file)
     <h2>Poste visé</h2>
 
     <table cellspacing="0">
-      {{ form.as_table }}
+        
+        <h4>Poste faisant l'objet d'une validation</h4>
+        <span class="info">Filter la liste selon une expression : </span><input type="text" />
+        <div>{{ form.postes_dae }}</div>
+        
+        <h1>OU</h1>
+
+        <h4>Poste existant déjà dans SGRH</h4>
+        <span class="info">Filter la liste selon une expression : </span><input type="text" />
+        <div>{{ form.postes_rh }}</div>
+
     </table>
   </fieldset>
 </form>