feedback et validation PJ
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Wed, 13 Apr 2011 16:56:05 +0000 (12:56 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Wed, 13 Apr 2011 16:56:05 +0000 (12:56 -0400)
project/dae/forms.py
project/dae/templates/dae/pieces.html
project/dae/views.py
project/media/skin/css/auf.css
project/settings.py

index b8ed4b7..d601326 100644 (file)
@@ -9,8 +9,13 @@ from datamaster_modeles import models as ref
 from dae import models as dae
 from rh_v1 import models as rh
 
-PostePieceForm = inlineformset_factory(dae.Poste, dae.PostePiece)
-DossierPieceForm = inlineformset_factory(dae.Dossier, dae.DossierPiece)
+
+class PostePieceForm(inlineformset_factory(dae.Poste, dae.PostePiece)):
+    pass
+
+class DossierPieceForm(inlineformset_factory(dae.Dossier, dae.DossierPiece)):
+    pass
+
 
 class PosteValidationForm(forms.ModelForm):
     """ Validation d'un poste"""
index 599cf67..7195db8 100644 (file)
@@ -13,6 +13,7 @@
     {% for f in piecesForm.forms %}
     <tr>
         <td>
+            {{ f.errors }}
             {% if f.initial.fichier %}
                 <a href="{{ f.initial.fichier.url }}" target="_blank">Télécharger</a>
             {% endif %}
index 33aa836..9301ce0 100644 (file)
@@ -10,6 +10,7 @@ from django.core.urlresolvers import reverse
 from django.http import Http404, HttpResponse, HttpResponseGone
 from django.shortcuts import redirect, render_to_response, get_object_or_404
 from django.template import RequestContext
+from django.contrib import messages
 
 from reversion.models import Version
 
@@ -57,12 +58,15 @@ def poste(request, key=None):
         data.update(dict(request.POST.items()))
         form = PosteForm(data, instance=poste)
         piecesForm = PostePieceForm(request.POST, request.FILES, instance=poste)
-        if 'save' in data and form.is_valid():
+        if 'save' in data and form.is_valid() and piecesForm.is_valid():
             poste = form.save()
             piecesForm.instance = poste
             piecesForm.save()
-            request.user.message_set.create(message="Le poste %s a été sauvegardé." % poste)
+            messages.add_message(request, messages.SUCCESS, "Le poste %s a été sauvegardé." % poste)
             return redirect('poste', key='dae-%s' % poste.id)
+        else:
+            messages.add_message(request, messages.ERROR, 'Il y a des erreurs dans le formulaire.')
+            
     else:
         # 'initial' évite la validation prémature lors d'une copie de poste de
         # rh_v1 vers dae.
@@ -197,7 +201,7 @@ def embauche(request, key=None, dossier=None):
                 dossier_form = DossierForm(request.POST, instance=dossier)
                 piecesForm = DossierPieceForm(request.POST, request.FILES, instance=dossier)
 
-                if dossier_form.is_valid():
+                if dossier_form.is_valid() and piecesForm.is_valid():
                     dossier = dossier_form.save()
                     piecesForm.instance = dossier
                     piecesForm.save()
@@ -225,10 +229,13 @@ def embauche(request, key=None, dossier=None):
                                     for k, v in cg_lines[r.id].items():
                                         setattr(r, k, v)
                                         r.save()
-
-                    request.user.message_set.create(message="Le dossier %s a été sauvegardé." % dossier)
+                    
+                    messages.add_message(request, messages.SUCCESS, "Le dossier %s a été sauvegardé." % dossier)
                     return redirect('embauche', key='dae-%s' % poste.id,
                                     dossier=dossier.id)
+                else:
+                    messages.add_message(request, messages.ERROR, 'Il y a des erreurs dans le formulaire.')
+                    
             else:
                 dossier_form = DossierForm(instance=dossier)
                 piecesForm = DossierPieceForm(instance=dossier)
index ed652b2..d4f7003 100644 (file)
@@ -67,7 +67,10 @@ table h1, table h2, table h3, table h4, table h5 {font-size: 120%; }
 #breadcrumb .separator {font-size: 120%;}
 
 ul.messagelist {border: 1px solid #DDDDDD; padding-left:}
-ul.messagelist li {background: url("/media/django/img/admin/icon_success.gif") no-repeat scroll 32px 0.3em #FFFFCC; color: #666666; display: block; font-size: 12px; margin:0; padding: 4px 5px 4px 55px;}
+ul.messagelist li {color: #666666; display: block; font-size: 12px; margin:0; padding: 4px 5px 4px 55px;}
+ul.messagelist li.success {background: url("/media/django/img/admin/icon_success.gif") no-repeat scroll 32px 0.3em #FFFFCC;}
+ul.messagelist li.info {background: url("/media/django/img/admin/icon_success.gif") no-repeat scroll 32px 0.3em #FFFFCC;}
+ul.messagelist li.error {background: url("/media/django/img/admin/icon_error.gif") no-repeat scroll 32px 0.3em #FFFFCC;}
 
 
 #main {padding:0% 2%; min-height:300px; }
index 4a1c3bb..2a7b716 100644 (file)
@@ -41,6 +41,7 @@ SECRET_KEY = '^2w#%abp_d+e#(7f5w$leef50)c@4y38cnn#ccji@84$2^rt#l'
 MIDDLEWARE_CLASSES = (
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
+    'django.contrib.messages.middleware.MessageMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.middleware.doc.XViewMiddleware',
     'reversion.middleware.RevisionMiddleware',
@@ -57,6 +58,7 @@ INSTALLED_APPS = (
     'admin_tools.dashboard',
     'django.contrib.auth',
     'django.contrib.contenttypes',
+    'django.contrib.messages',
     'django.contrib.sessions',
     'django.contrib.admin',
     'south',