utils 2 : revue des traitements des insertions
authorWilly MANGA <willy.manga@auf.org>
Mon, 10 Oct 2016 17:56:17 +0000 (18:56 +0100)
committerWilly MANGA <willy.manga@auf.org>
Mon, 10 Oct 2016 17:56:17 +0000 (18:56 +0100)
 * il y a des cas qui ne doivent se résoudre que lorsque l'usager
n'existe pas !

 * quelques vérifications à effectuer si l'usager,adel,liste existent

projets_django/bacgl_utils2/listes2/views.py

index 08adb34..1dca923 100644 (file)
@@ -215,20 +215,22 @@ def insertionTraitement(request):
 
             #Et maintenant les enregistrements dans le système
             #par défaut on va fixer la spécialité à 'ND'
-            if spec == '':
-                spec = Specialite.objects.get(intitule='ND')
-            else:
-                try:
-                    spec = Specialite.objects.get(intitule=spec)
-                except Specialite.DoesNotExist :
-                    spec = Specialite(intitule=spec)
-                    spec.save()
-
-            pays = Pays.objects.get(nom=p)
 
             try :
                 u = Usager.objects.get(nom=n)
+                #ça signifie qu'on a déjà la spécialité
             except Usager.DoesNotExist :
+                if spec == '':
+                    spec = Specialite.objects.get(intitule='ND')
+                else:
+                    try:
+                        spec = Specialite.objects.get(intitule=spec)
+                    except Specialite.DoesNotExist :
+                        spec = Specialite(intitule=spec)
+                        spec.save()
+
+                pays = Pays.objects.get(nom=p)
+
                 if tel == '':
                     u = Usager(nom=n,genre=g,
                             paysOrigine= pays,
@@ -252,11 +254,49 @@ def insertionTraitement(request):
                     adel.save(force_insert=True)
 
             #et enfin dans l'abonnement à la liste
-            li = Listes.objects.get(nom=liste_prefix)
+            try:
+                li = Listes.objects.get(nom=liste_prefix)
+            except Listes.DoesNotExist:
+                donnees = {'pays':p,
+                        'nom':n,
+                        'genre':g,
+                        'adel':a,
+                        'specialite':spec,
+                        }
+                form = InsertionForm(initial=donnees)
+                message = u"La liste de diffusion %s n'existe pas" %\
+                        (liste_prefix)
+                contexte = {'message':message,
+                        'form':form,
+                        }
+
+                return render(request,
+                        'listes2/insertion.html',
+                        contexte,
+                        status=302)
+
             list_abo = Abonnement(liste=li, abonne= adel)
-            list_abo.save(force_insert=True)
+            #avant d'enregistrer on doit s'assurer de ne pas
+            #l'avoir déjà fait
+            try :
+                list_abo.save(force_insert=True)
+            except ValidationError:
+                return HttpResponseRedirect('/listes2/insertion')
+
+            # on reprend certaines données pour le nouveau formulaire
+            donnees = {'pays':p,'liste':liste_prefix}
+            form = InsertionForm(initial=donnees)
+            message = u"L'inscription de %s dans la liste %s effectuée" %\
+                    (n,liste_prefix)
+            contexte = {'message':message, 'form':form}
+
+            return render(request,
+                    'listes2/insertion.html',
+                    contexte,
+                    status=302,
+                    )
 
-            return HttpResponseRedirect('/listes2/insertion/')
+#            return HttpResponseRedirect('/listes2/insertion/')
 
         else : # il y a des erreurs dans le formulaire
             contexte = { 'message':'Veuillez revérifier votre saisie',