poste
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Wed, 1 Aug 2012 19:21:39 +0000 (15:21 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Wed, 1 Aug 2012 19:21:39 +0000 (15:21 -0400)
project/dae/forms.py
project/dae/models.py
project/dae/templates/dae/embauche_consulter.html
project/dae/templates/dae/poste_consulter.html
project/dae/templatetags/dae.py
project/dae/views.py

index ec466e3..e2ac873 100644 (file)
@@ -12,6 +12,7 @@ from ajax_select.fields import AutoCompleteSelectField
 
 from auf.django.references import models as ref
 from auf.django.workflow.forms import WorkflowFormMixin
+from auf.django.workflow.models import WorkflowCommentaire
 
 from project import groups
 from project.rh import models as rh
@@ -496,9 +497,24 @@ class DossierWorkflowForm(WorkflowFormMixin):
     def save(self):
         super(DossierWorkflowForm, self).save()
         poste = self.instance.poste
-        if poste.etat == self._etat_initial:
-            poste.etat = self.instance.etat
-            poste.save()
+
+        # créer le commentaire automatique pour le poste associé
+        commentaire = WorkflowCommentaire()
+        commentaire.content_object = poste
+        texte = u"Validation automatique à travers le dossier [%s] de %s\n%s" %(
+                self.instance.id,
+                self.instance,
+                self.data.get('commentaire', ''),
+                )
+        commentaire.texte = texte
+        commentaire.etat_initial = self.instance._etat_courant
+        commentaire.etat_final = self.instance.etat
+        commentaire.owner = self.request.user
+        commentaire.save()
+
+        # force l'état du poste
+        poste.etat = self.instance.etat
+        poste.save()
 
 
 class ContratForm(forms.ModelForm):
index 4f3c195..3d49ff4 100644 (file)
@@ -693,10 +693,11 @@ class Dossier(DossierWorkflow, rh.Dossier_):
             dae_numerisee_rh = dossier_rh.rh_dossierpieces.create(
                 nom=u'DAE numérisée'
             )
-            dae_numerisee_rh.fichier.save(
-                os.path.basename(self.dae_numerisee.name),
-                self.dae_numerisee
-            )
+            if not settings.DEBUG:
+                dae_numerisee_rh.fichier.save(
+                    os.path.basename(self.dae_numerisee.name),
+                    self.dae_numerisee
+                )
 
         # Fermer les rémunérations qui commencent avant le début du contrat
         dossier_rh.rh_remunerations.filter(
index 10b2b16..faa876b 100644 (file)
 <h1 class="gauche">Demande d'autorisation d'engagement de personnel</h1>
 <a class="droite bouton-action" href="#" onclick="window.print(); return false;">Impression</a>
 {% if dossier|est_editable:request.user %}
-<a class="droite bouton-action" href="{% url embauche dossier.poste.key dossier.id %}">Modifier</a>
+<a class="droite bouton-action" href="{% url embauche dossier.poste.key dossier.id %}">Modifier le dossier</a>
+{% endif %}
+{% if dossier.poste|est_editable:request.user %}
+<a class="droite bouton-action" href="{% url poste dossier.poste.key %}">Modifier le poste</a>
 {% endif %}
 {% if importer and not dossier.dossier_rh %}
 <a class="droite bouton-action" href="{% url embauche_importer dossier.id %}">Importer</a>
index 189f0e3..cdbd621 100644 (file)
@@ -37,6 +37,7 @@
 {% endfor %}
 </table>
 
+{% if not poste.dae_dossiers.all %}
 <form action="" method="post">
 <h2>Votre validation</h2>
 <p>Le poste est actuellement à l'état :  <span class="note">{{ poste.get_etat_display }}</span>.</p>
 </table>
 {{ validationForm.get_input_etats_as_buttons|safe }}
 </form>
+{% endif %}
+
 </fieldset>
 
+
 <div class="print-only">
   <h2>Signatures</h2>
   <p class="signature"> ____________________________________________________________</p>
index 2b69560..b7b5f75 100644 (file)
@@ -37,6 +37,8 @@ def peut_importer(user):
 def est_editable(obj, user):
     klass = obj.__class__
     groupes_users = [g.name for g in user.groups.all()]
+    print ETATS_EDITABLE
+    print klass.objects.mes_choses_a_faire(user).all()
     if obj.etat in ETATS_EDITABLE and \
        (obj in klass.objects.mes_choses_a_faire(user).all() or \
             groups.DRH_NIVEAU_1 in groupes_users or \
index eb0f5a1..d68a2f6 100644 (file)
@@ -8,7 +8,7 @@ from django.contrib.auth.decorators import login_required, user_passes_test
 from django.contrib.contenttypes.models import ContentType
 from django.core.exceptions import MultipleObjectsReturned
 from django.core.paginator import Paginator, InvalidPage
-from django.db.models import Q
+from django.db.models import Q, Count
 from django.http import Http404, HttpResponse, HttpResponseGone
 from django.shortcuts import redirect, render, get_object_or_404
 from sendfile import sendfile
@@ -267,8 +267,12 @@ def postes_liste(request):
         content_type.id
     )}
     postes_a_traiter = dae.Poste.objects.mes_choses_a_faire(request.user) \
+            .annotate(num_dae=Count('dae_dossiers')) \
+            .filter(num_dae=0) \
             .extra(select=extra_select).order_by('-id')
     postes_en_cours = dae.Poste.objects.ma_region_ou_service(request.user) \
+            .annotate(num_dae=Count('dae_dossiers')) \
+            .filter(num_dae=0) \
             .extra(select=extra_select) \
             .filter(~Q(etat=POSTE_ETAT_FINALISE)) \
             .order_by('-id')