creer DAE a partir de poste DAE ou RH
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Wed, 1 Aug 2012 18:39:32 +0000 (14:39 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Wed, 1 Aug 2012 18:39:32 +0000 (14:39 -0400)
project/assets/js/dae-choisir-poste.js [new file with mode: 0644]
project/dae/forms.py
project/dae/templates/dae/embauche-choisir-poste.html
project/dae/templates/dae/poste.html
project/dae/views.py

diff --git a/project/assets/js/dae-choisir-poste.js b/project/assets/js/dae-choisir-poste.js
new file mode 100644 (file)
index 0000000..509ffac
--- /dev/null
@@ -0,0 +1,11 @@
+
+$(document).ready(function() {
+        $(".selectlist input[type=text]").change(function() {
+            var filtre = $(this).val();
+            var choix = $(this).parent().find("option");
+            choix.show();
+            choix.each(function(idx) {
+                if ($(this).html().indexOf(filtre) == -1) $(this).hide();
+                });
+            });
+        });
index 2aba3d5..ec466e3 100644 (file)
@@ -1,10 +1,12 @@
 # -*- encoding: utf-8 -*-
 
 from django import forms
+from django.core.urlresolvers import reverse
 from django.forms.models import BaseInlineFormSet
-from django.contrib.admin import widgets as admin_widgets
-from django.db.models import Q, Max, Count
 from django.forms.models import inlineformset_factory, modelformset_factory
+from django.db.models import Q, Max, Count
+from django.shortcuts import redirect
+from django.contrib.admin import widgets as admin_widgets
 
 from ajax_select.fields import AutoCompleteSelectField
 
@@ -412,12 +414,31 @@ class ChoosePosteForm(forms.Form):
 
     def _poste_rh_choices(self, request):
         """ Menu déroulant pour les postes."""
+        postes_dae = dae.Poste.objects.exclude(etat__in=(POSTE_ETAT_FINALISE, ))
+        id_poste_dae_commences = [p.id_rh_id for p in postes_dae if p.id_rh is not None]
         postes_rh = rh.Poste.objects.ma_region_ou_service(request.user) \
+                .exclude(id__in=id_poste_dae_commences) \
                 .order_by('-date_debut')
 
         return [('', '----------')] + \
                [('rh-%s' % p.id, label_poste_display(p)) for p in postes_rh]
 
+    def clean(self):
+        cleaned_data = super(ChoosePosteForm, self).clean()
+        postes_dae = cleaned_data.get("postes_dae")
+        postes_rh = cleaned_data.get("postes_rh")
+        if (postes_dae is u"" and postes_rh is u"") or \
+           (postes_dae is not u"" and postes_rh is not u""):
+                raise forms.ValidationError("Choisissez un poste DAE ou un poste RH")
+        return cleaned_data
+
+    def redirect(self):
+        poste_dae_key = self.cleaned_data.get("postes_dae")
+        if poste_dae_key is not u"":
+            return redirect(reverse('embauche', args=(poste_dae_key,)))
+        poste_rh_key = self.cleaned_data.get("postes_rh")
+        if poste_rh_key is not u"":
+            return redirect("%s?creer_dossier_dae" % reverse('poste', args=(poste_rh_key,)))
 
 class EmployeForm(forms.ModelForm):
     """ Formulaire des employés. """
index 3859564..0396aae 100644 (file)
@@ -8,30 +8,38 @@
 {% block extrahead %}
   <script src="{{ STATIC_URL }}js/jquery-1.5.1.min.js" type="text/javascript"></script>
   <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/dae.css" />
-  <script src="{{ STATIC_URL }}js/dae.js" type="text/javascript"></script>
-  <script src="{{ STATIC_URL }}js/dae-embauche.js" type="text/javascript"></script>
+  <script src="{{ STATIC_URL }}js/dae-choisir-poste.js" type="text/javascript"></script>
 {% endblock %}
 
 {% block main %}
 <h1>Demande d'autorisation d'engagement de personnel</h1>
 <form action="" method="post" enctype="multipart/form-data">
-  <h2 class="section">SECTION 1 - POSTE</h2>
-  <fieldset>
-    <h2>Poste visé</h2>
 
-    <table cellspacing="0">
+    <h2 class="section">SECTION 1 - POSTE</h2>
+
+    <h3>Poste visé</h3>
+
+    {{ form.non_field_errors }}
         
-        <h4>Poste faisant l'objet d'une validation</h4>
+    <h4>Poste ayant fait l'objet d'une validation DAE</h4>
+    <div class="selectlist">
         <span class="info">Filter la liste selon une expression : </span><input type="text" />
-        <div>{{ form.postes_dae }}</div>
-        
-        <h1>OU</h1>
+        <span class="info">&nbsp;puis appuyer sur TAB</span>
+         <div>{{ form.postes_dae }}</div>
+    </div>
+     
+     <h1>OU</h1>
 
-        <h4>Poste existant déjà dans SGRH</h4>
+    <h4>Poste existant déjà dans SGRH</h4>
+    <div class="selectlist">
         <span class="info">Filter la liste selon une expression : </span><input type="text" />
+        <span class="info">&nbsp;puis appuyer sur TAB</span>
         <div>{{ form.postes_rh }}</div>
+    </div>
+
+    <br >
+    <br >
+    <input type="submit" value="Créer la DAE" />
 
-    </table>
-  </fieldset>
 </form>
 {% endblock %}
index 1fa8c24..9b6ce67 100644 (file)
@@ -350,8 +350,12 @@ Demande d'autorisation d'engagement
     </div>
     </fieldset>
 
-    <input type="submit" name="continue" value="Sauvegarder (et ajouter des lignes)" />
-    <input type="submit" name="save" value="Sauvegarder" />
+    {% if creer_dossier_dae %}
+        <input type="submit" name="save" value="Créer une embauche associée à ce poste" />
+    {% else %}
+        <input type="submit" name="continue" value="Sauvegarder (et ajouter des lignes)" />
+        <input type="submit" name="save" value="Sauvegarder" />
+    {% endif %}
 
 </form>
 
index 33838d4..eb0f5a1 100644 (file)
@@ -119,6 +119,10 @@ def poste(request, key=None):
     il est automatiquement copié dans dae.
 
     """
+    if 'creer_dossier_dae' in request.GET:
+        creer_dossier_dae = True
+    else:
+        creer_dossier_dae = False
 
     def _dupliquer_poste(poste_dae, poste_rh):
         """
@@ -211,6 +215,9 @@ def poste(request, key=None):
                 request, messages.SUCCESS,
                 "Le poste %s a été sauvegardé." % poste
             )
+            if creer_dossier_dae:
+                return redirect('embauche', key='dae-%s' % poste.id)
+
             if 'save' in request.POST:
                 return redirect('poste_consulter', key='dae-%s' % poste.id)
             else:
@@ -244,6 +251,7 @@ def poste(request, key=None):
         financementForm=financementForm,
         comparaisons_formset=comparaisons_formset,
         poste_rh=poste_rh,
+        creer_dossier_dae=creer_dossier_dae,
     ))
 
     return render(request, 'dae/poste.html', vars)
@@ -345,8 +353,14 @@ def embauche_importer(request, dossier_id=None):
 
 @dae_groupe_requis
 def embauche_choisir_poste(request):
+    if request.POST:
+        form = ChoosePosteForm(data=request.POST, request=request)
+        if form.is_valid():
+            return form.redirect()
+    else:
+        form = ChoosePosteForm(request=request)
     c = {
-        'form': ChoosePosteForm(request=request),
+        'form': form,
     }
     return render(request, 'dae/embauche-choisir-poste.html', c)