Listes 2 : mises à jour
authorWilly MANGA <willy.manga@auf.org>
Fri, 7 Oct 2016 15:50:03 +0000 (16:50 +0100)
committerWilly MANGA <willy.manga@auf.org>
Fri, 7 Oct 2016 15:50:03 +0000 (16:50 +0100)
 * plus de champs à remplir dans le formulaire
 * CSS: police 'open sans'
 * ancres par ci par là à l'index
 * des soucis avec l'affichage des infos par adresse, pas
encore totalement résolu

projets_django/bacgl_utils2/listes2/forms.py
projets_django/bacgl_utils2/listes2/static/listes2/css/base.css
projets_django/bacgl_utils2/listes2/templates/listes2/base.html
projets_django/bacgl_utils2/listes2/templates/listes2/index.html
projets_django/bacgl_utils2/listes2/templates/listes2/infolistes.html
projets_django/bacgl_utils2/listes2/templates/listes2/insertion.html
projets_django/bacgl_utils2/listes2/views.py

index ffbb879..b57ecb5 100644 (file)
@@ -14,10 +14,37 @@ class InsertionForm(forms.Form):
             ("N/A", "Non Applicable"),
             )
 
+    PAYS = (
+            ("Angola","Angola"),
+            ("Botswana","Botswana"),
+            ("Burundi","Burundi"),
+            ("Cameroun","Cameroun"),
+            ("Centrafrique","Centrafrique"),
+            ("Congo","Congo"),
+            ("Gabon","Gabon"),
+            ("Malawi","Malawi"),
+            ("RDC","RDC"),
+            ("Rwanda","Rwanda"),
+            ("Tanzanie","Tanzanie"),
+            ("Tchad","Tchad"),
+            ("ND","INCONNU ou Autre"),
+            )
+
     nom = forms.CharField(max_length=200)
     genre = forms.ChoiceField(choices=SEXE,
     help_text="Choisir 'Non applicable' si personne morale\
-            <br />ou si indécis",
+            <br />ou si vous ne connaissez pas le genre",
+            )
+    specialite = forms.CharField(label='Spécialité',
+            max_length=100,
+            required=False)
+    telephone = forms.CharField(label='Numéro de téléphone',
+            required=False,
+            help_text="Vous pouvez indiquer un ou plusieurs numéros<br />\
+            avec l'indicatif du pays",
+            )
+    pays = forms.ChoiceField(choices=PAYS,
+            help_text="Sélectionner un pays ou choisi 'Inconnu'",
             )
     adel = forms.EmailField(label='Adresse électronique')
     liste = forms.CharField(label='Liste de diffusion à abonner',
index 995183e..7b8b6e5 100644 (file)
@@ -6,7 +6,8 @@ body {
     margin: 0;
     padding: 0;
     font-size: 12px;
-    font-family: "Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif;
+    /*font-family: "Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif; */
+    font-family: "Open Sans", sans-serif;
     color: #333;
     background: #fff;
 }
index 118aa52..4cc5b3e 100644 (file)
@@ -2,6 +2,7 @@
 
 {% load staticfiles %}
 <html>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
         <title>{% block title %} BACGL - Gestion des listes (v2) {% endblock %}</title>
   <link rel="stylesheet"  type="text/css" href="{% static 'listes2/css/base.css' %}">
 
@@ -21,9 +22,6 @@
                                          <li><a href="/listes2/insertion/">Formulaire d'insertion</li>
                                   {% endif %}
                           <li>
-                                 {% comment %}
-                                   <a href="/listesdeconnexion/">Se déconnecter</a> <br />
-                                 {% endcomment %}
                                  <a href="{% url 'sortie' %}">Se déconnecter</a> <br />
                             {% endif %}
                         </ul>
index b03ce33..7405bb7 100644 (file)
@@ -2,10 +2,19 @@
 
 {% block content %}
 
-<h1><a name="debutdepage">Aperçu gestion des listes du bureau</a></h1>
+<h1><a name="debutdepage">Aperçu des listes du bureau</a></h1>
 <p>Il s'agit des listes concernant les usagers académiques</p>
 
-<h3> Récapitulatif</h3>
+<h2>Sommaire</h2>
+
+<ul>
+       <li><a href="#recap">Récapitulatif</a></li>
+       <li><a href="#lastsubscribed">Les 10 derniers inscrits</a></li>
+       <li><a href="#listes">Listes existantes</a></li>
+       <li><a href="#etabrece">Etablissements recensés</a></li>
+       <li><a href="#adel">Adresses électroniques</a></li>
+</ul>
+<h3> <a name="recap">Récapitulatif</a></h3>
 <table border="1">
        <tr><th>Element</th><th>Nombre</th></tr>
        <tr><td>Listes de diffusion</td><td>{{ listes_dispo | length }}</td></tr>
@@ -14,7 +23,7 @@
 </table>
 
 {% if derniers_inscrits %}
-<h3> Les 10 derniers inscrits </h3>
+<h3> <a name="lastsubscribed">Les 10 derniers inscrits</a> </h3>
 <ul>
     {% for inscrit in derniers_inscrits %}
     <li><em>{{inscrit.abonne}}</em> pour la liste
 
 {% if listes_dispo %}
 
-<h3>Listes existantes</h3>
+<h3><a name="listes">Listes existantes</a></h3>
+<p> Vous trouverez le nombre d'abonnés entre parenthèses. </p>
   <ul>
     {% for liste in listes_dispo %}
-    <li><a href="{% url 'infoListes' liste.id %}">{{liste.nom }}</a></li>
+    <li><a href="{% url 'infoListes' liste.id %}">{{liste.nom }}</a> ({{ liste.abonnement_set.all.count}})</li>
     {% endfor %}
  </ul>
  ;)
@@ -42,7 +52,7 @@
 
 {% if etab_dispo %}
 
-<h3>Etablissements recensés</h3>
+<h3><a name="etabrece">Etablissements recensés</a></h3>
   <ul>
     {% for etab in etab_dispo %}
       <li>{{etab }}</li>
@@ -55,7 +65,7 @@
 
 {% endif %}
 
-<h3>Adresses électroniques</h3>
+<h3><a name="adel">Adresses électroniques</a></h3>
 
 <p>Nous dénombrons {{ adel_dispo |length }} adresses électroniques enregistrées.<br />
 Les <a href="{% url 'infoAbonne' %}">consulter</a>
index 1d2efae..8c30321 100644 (file)
@@ -10,7 +10,7 @@ Liste à traiter : {{listes_id}}
 Nombre d'abonnés : {{listing|length}}<br>
 Les abonné(e)s à la liste sont : </p>
 <ul>
-{% for email in listing2 %}
+{% for email in listing %}
 {% comment %}
 <li><a href="{% url 'listes2::infoadel' liste.id %}">{{liste}}</a></li> 
 {% endcomment %}
index 973e799..731ce35 100644 (file)
@@ -3,11 +3,10 @@
 {% block content %}
 
 {% if user.is_authenticated %}
+
+<h3> Formulaire d'insertion d'informations</h3>
 Dernière insertion : {{nom}} <br />
-{% comment %}
-<form action="{% url 'listes2:insertionTraitement' nouvelInscrit %}" method="get">
-  <form action="/listes2/insertion/traitement/" method="get">
-  {% endcomment %}
+<p><strong> {{ message }}</strong></p> <br />
 <form action="{% url 'insertionTraitement' %}" method="post">
 
   <table>
index de1b0ae..08adb34 100644 (file)
@@ -121,7 +121,7 @@ def infoUsager(request):
         phrase = "%s|%s|%s|%s|%s|%s" % (i.nom,i.genre,i.paysOrigine,
                 i.specialite,
                 i.telephone,
-                Adel.objects.filter(proprietaire__id=i.id)).order_by('adresse')
+                Adel.objects.filter(proprietaire__id=i.id).order_by('adresse'))
         info_us3[i] = i.adel_set.all()
 
     #Pagination
@@ -146,8 +146,10 @@ def infoAdel(request,adel_id):
     Les infos qu'on peut tirer de chaque adresse électronique
     """
 
-    adel = Adel.objects.get(pk=adel_id)
-    proprio = Usager.objects.get(adel__id=adel_id)
+    AboAdel = Abonnement.objects.get(pk=adel_id)
+    adel = Adel.objects.get(adresse=AboAdel.abonne)
+    #proprio = Usager.objects.get(adel__id=adel_id)
+    proprio = Usager.objects.get(adel__adresse=adel.adresse)
 
     contexte = {'adel': adel,
             'proprio':proprio,
@@ -175,7 +177,7 @@ def rechercheTraitement(request):
                     #TODO trouver comment se séparer des lignes en plus
 #                    Q(nom__contains=terme) | Q(adel__adresse__contains=terme)
                      adel__adresse__contains=terme
-                    )
+                    ).distinct()
             contexte = {'resultat' : resultat,
                     'terme': terme,
                     }
@@ -206,22 +208,48 @@ def insertionTraitement(request):
             n = form.cleaned_data['nom']
             g = form.cleaned_data['genre']
             a = form.cleaned_data['adel']
+            spec = form.cleaned_data['specialite']
+            tel = form.cleaned_data['telephone']
+            p = form.cleaned_data['pays']
             liste_prefix = form.cleaned_data['liste']
 
             #Et maintenant les enregistrements dans le système
-            #par défaut on va fixé la spécialité à 'ND'
-            spec = Specialite.objects.get(intitule='ND')
-            pays = Pays.objects.get(nom='ND')
-            u = Usager(nom=n,genre=g,
-                    paysOrigine= pays,
-                    specialite= spec,
-                    )
-            u.save(force_insert=True)
+            #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)
+            except Usager.DoesNotExist :
+                if tel == '':
+                    u = Usager(nom=n,genre=g,
+                            paysOrigine= pays,
+                            specialite= spec,
+                            )
+                else :
+                    u = Usager(nom=n,genre=g,
+                            paysOrigine= pays,
+                            specialite= spec,
+                            telephone=tel,
+                            )
+                u.save(force_insert=True)
+
 
             #TODO considerer l'erreur IntegrityError
             #Puis l'adresse électronique
-            adel = Adel(proprietaire= u, adresse = a)
-            adel.save(force_insert=True)
+            try :
+                adel = Adel.objects.get(adresse=a)
+            except Adel.DoesNotExist:
+                    adel = Adel(proprietaire= u, adresse = a)
+                    adel.save(force_insert=True)
 
             #et enfin dans l'abonnement à la liste
             li = Listes.objects.get(nom=liste_prefix)
@@ -230,6 +258,15 @@ def insertionTraitement(request):
 
             return HttpResponseRedirect('/listes2/insertion/')
 
+        else : # il y a des erreurs dans le formulaire
+            contexte = { 'message':'Veuillez revérifier votre saisie',
+                    'form' : form,
+                    }
+            return render(request,
+                    'listes2/insertion_resultat.html',
+                    contexte,status=303) #lire rfc2616 :)
+
+
     else : 
         form = InsertionForm()