[#3059] Page intermédiaire à l'importation d'une DAE
authorEric Mc Sween <eric.mcsween@auf.org>
Mon, 14 May 2012 14:48:54 +0000 (10:48 -0400)
committerEric Mc Sween <eric.mcsween@auf.org>
Mon, 14 May 2012 14:48:54 +0000 (10:48 -0400)
project/dae/models.py
project/dae/templates/dae/embauche_importer.html [new file with mode: 0644]
project/dae/views.py

index 6c6085b..147c41f 100644 (file)
@@ -114,8 +114,11 @@ class Poste(PosteWorkflow, rh.Poste_):
         copieur = PosteCopier(verbosity=verbosity, dry_run=dry_run)
         return copieur.copy(self)
 
+    def dans_rh(self):
+        return self.id_rh or None
+
     def importer_dans_rh(self):
-        poste_rh = self.id_rh or rh.Poste()
+        poste_rh = self.dans_rh() or rh.Poste()
         poste_rh.nom = self.nom
         poste_rh.implantation = self.implantation
         poste_rh.type_poste = self.type_poste
@@ -416,8 +419,11 @@ class Employe(AUFMetadata):
     def __unicode__(self):
         return u'%s %s' % (self.prenom, self.nom.upper())
 
+    def dans_rh(self):
+        return self.id_rh or None
+
     def importer_dans_rh(self):
-        return self.id_rh or rh.Employe.objects.create(
+        return self.dans_rh() or rh.Employe.objects.create(
             nom=self.nom,
             prenom=self.prenom,
             genre=self.genre
@@ -580,19 +586,33 @@ class Dossier(DossierWorkflow, rh.Dossier_):
         copieur = DossierCopier(verbosity=verbosity, dry_run=dry_run)
         return copieur.copy(self)
 
-    def importer_dans_rh(self):
+    def dans_rh(self):
+        """
+        Retourne le dossier associé dans le système RH ou ``None`` s'il n'y
+        en a pas.
+        """
         today = date.today()
-        poste_rh = self.poste.importer_dans_rh()
-        employe_rh = self.employe.importer_dans_rh()
+        poste_rh = self.poste.dans_rh()
+        if poste_rh is None:
+            return None
+        employe_rh = self.employe.dans_rh()
+        if employe_rh is None:
+            return None
         try:
-            dossier_rh = rh.Dossier.objects.get(
+            return rh.Dossier.objects.get(
                 Q(date_debut=None) | Q(date_debut__lte=today),
                 Q(date_fin=None) | Q(date_fin__gte=today),
                 poste=poste_rh,
                 employe=employe_rh
             )
         except rh.Dossier.DoesNotExist:
-            dossier_rh = rh.Dossier(poste=poste_rh, employe=employe_rh)
+            return None
+
+    def importer_dans_rh(self):
+        poste_rh = self.poste.importer_dans_rh()
+        employe_rh = self.employe.importer_dans_rh()
+        dossier_rh = self.dans_rh() or \
+                rh.Dossier(poste=poste_rh, employe=employe_rh)
 
         dossier_rh.statut = self.statut
         dossier_rh.organisme_bstg = self.organisme_bstg
diff --git a/project/dae/templates/dae/embauche_importer.html b/project/dae/templates/dae/embauche_importer.html
new file mode 100644 (file)
index 0000000..101232b
--- /dev/null
@@ -0,0 +1,41 @@
+{% extends 'base.html' %}
+
+{% block title %}RH - DAE - Importation{% endblock %}
+{% block titre %}Ressources humaines{% endblock %}
+{% block sous_titre %}Demande d'autorisation d'engagement{% endblock %}
+
+{% block main %}
+<h1 class="gauche">Importation d'une DAE</h1>
+
+<p>Vous vous apprêtez à importer le dossier <strong>{{ dossier }}</strong> dans
+le système RH.</p>
+
+<ul>
+  {% if dossier.employe.dans_rh %}
+  <li>L'employé <strong>{{ dossier.employe }}</strong> existe déjà dans le
+  système RH.</li>
+  {% else %}
+  <li>L'employé <strong>{{ dossier.employe }}</strong> n'existe pas dans le
+  système RH et sera donc créé.</li>
+  {% endif %}
+  {% if dossier.poste.dans_rh %}
+  <li>Le poste <strong>{{ dossier.poste }}</strong> existe déjà dans le système
+  RH et sera mis à jour.</li>
+  {% else %}
+  <li>Le poste <strong>{{ dossier.poste }}</strong> n'existe pas dans le
+  système RH et sera donc créé.</li>
+  {% endif %}
+  {% if dossier.dans_rh %}
+  <li>Le dossier <strong>{{ dossier }}</strong> existe déjà dans le système RH
+  et sera mis à jour.</li>
+  {% else %}
+  <li>Le dossier <strong>{{ dossier }}</strong> n'existe pas dans le système RH
+  et sera donc créé.</li>
+  {% endif %}
+</ul>
+
+<form method="post">
+  <input type="submit" name="confirmer" value="Continuer">
+  <input type="submit" value="Annuler">
+</form>
+{% endblock %}
index 73c30a8..fb401fd 100644 (file)
@@ -279,8 +279,16 @@ def embauche_consulter(request, dossier_id):
 @dossier_dans_ma_region_ou_service
 def embauche_importer(request, dossier_id=None):
     dossier_dae = get_object_or_404(dae.Dossier, id=dossier_id)
-    dossier_rh = dossier_dae.importer_dans_rh()
-    return redirect('admin:rh_dossier_change', dossier_rh.id)
+    if request.method == 'POST':
+        if 'confirmer' in request.POST:
+            dossier_rh = dossier_dae.importer_dans_rh()
+            return redirect('admin:rh_dossier_change', dossier_rh.id)
+        else:
+            return redirect('embauches_finalisees')
+    else:
+        return render_to_response('dae/embauche_importer.html', {
+            'dossier': dossier_dae
+        }, RequestContext(request))
 
 
 @dae_groupe_requis